The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#) https://grpc.io/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Sergii Tkachenko de6ed9ba9f
[Python] Migrate from yapf to black (#33138)
2 years ago
..
README.md [Python fix-it][Aysnc Example] Adding examples for aysnc interceptor context propagaton (#32840) 2 years ago
async_greeter_client.py [Python] Migrate from yapf to black (#33138) 2 years ago
async_greeter_server_with_interceptor.py [Python] Migrate from yapf to black (#33138) 2 years ago
helloworld_pb2.py [Python fix-it][Aysnc Example] Adding examples for aysnc interceptor context propagaton (#32840) 2 years ago
helloworld_pb2.pyi [Python fix-it][Aysnc Example] Adding examples for aysnc interceptor context propagaton (#32840) 2 years ago
helloworld_pb2_grpc.py [Python fix-it][Aysnc Example] Adding examples for aysnc interceptor context propagaton (#32840) 2 years ago

README.md

gRPC Python Async Interceptor Example

This example demonstrate the usage of Async interceptors and context propagation using contextvars.

When to use contextvars

Contextvars can be used to propagate context in a same thread or coroutine, some example usage include:

  1. Propagate from interceptor to another interceptor.
  2. Propagate from interceptor to the server handler.
  3. Propagate from client to server.

How does this example works

This example have the following steps:

  1. Generate RPC ID on client side and propagate to server using metadata.
    • contextvars can be used here if client and server is running in a same coroutine (or same thead for Sync).
  2. Server interceptor1 intercept the request, it checks rpc_id_var and decorate it with it's tag Interceptor1.
  3. Server interceptor2 intercept the request, it checks rpc_id_var and decorate it with it's tag Interceptor2.
  4. Server handler receives the request with rpc_id_var decorated by both interceptor1 and interceptor2.

How to run this example

  1. Start server: python3 -m async_greeter_server_with_interceptor
  2. Start client: python3 -m async_greeter_client

Expected outcome

  • On client side, you should see logs similar to:
Sending request with rpc id: 59ac966558b3d7d11a06bd45f1a0f89d
Greeter client received: Hello, you!
  • On server side, you should see logs similar to:
INFO:root:Starting server on [::]:50051
INFO:root:Interceptor1 called with rpc_id: default
INFO:root:Interceptor2 called with rpc_id: Interceptor1-59ac966558b3d7d11a06bd45f1a0f89d
INFO:root:Handle rpc with id Interceptor2-Interceptor1-59ac966558b3d7d11a06bd45f1a0f89d in server handler.