| gRPC AsyncIO API | |
| ================ | |
| .. module:: grpc.aio | |
| Overview | |
| -------- | |
| gRPC AsyncIO API is the **new version** of gRPC Python whose architecture is | |
| tailored to AsyncIO. Underlying, it utilizes the same C-extension, gRPC C-Core, | |
| as existing stack, and it replaces all gRPC IO operations with methods provided | |
| by the AsyncIO library. | |
| This API is stable. Feel free to open issues on our GitHub repo | |
| `grpc/grpc <https://github.com/grpc/grpc>`_ for bugs or suggestions. | |
| The design doc can be found here as `gRFC <https://github.com/grpc/proposal/pull/155>`_. | |
| Caveats | |
| ------- | |
| gRPC Async API objects may only be used on the thread on which they were | |
| created. AsyncIO doesn't provide thread safety for most of its APIs. | |
| Blocking Code in AsyncIO | |
| ------------------------ | |
| Making blocking function calls in coroutines or in the thread running event | |
| loop will block the event loop, potentially starving all RPCs in the process. | |
| Refer to the Python language documentation on AsyncIO for more details (`running-blocking-code <https://docs.python.org/3/library/asyncio-dev.html#running-blocking-code>`_). | |
| Module Contents | |
| --------------- | |
| Create Channel | |
| ^^^^^^^^^^^^^^ | |
| Channels are the abstraction of clients, where most of networking logic | |
| happens, for example, managing one or more underlying connections, name | |
| resolution, load balancing, flow control, etc.. If you are using ProtoBuf, | |
| Channel objects works best when further encapsulate into stub objects, then the | |
| application can invoke remote functions as if they are local functions. | |
| .. autofunction:: insecure_channel | |
| .. autofunction:: secure_channel | |
| Channel Object | |
| ^^^^^^^^^^^^^^ | |
| .. autoclass:: Channel | |
| Create Server | |
| ^^^^^^^^^^^^^ | |
| .. autofunction:: server | |
| Server Object | |
| ^^^^^^^^^^^^^ | |
| .. autoclass:: Server | |
| gRPC Exceptions | |
| ^^^^^^^^^^^^^^^ | |
| .. autoexception:: BaseError | |
| .. autoexception:: UsageError | |
| .. autoexception:: AbortError | |
| .. autoexception:: InternalError | |
| .. autoexception:: AioRpcError | |
| gRPC Metadata | |
| ^^^^^^^^^^^^^ | |
| .. autoclass:: Metadata | |
| RPC Context | |
| ^^^^^^^^^^^^^^^^^^^^ | |
| .. autoclass:: RpcContext | |
| Client-Side Context | |
| ^^^^^^^^^^^^^^^^^^^^^^^ | |
| .. autoclass:: Call | |
| .. autoclass:: UnaryUnaryCall | |
| .. autoclass:: UnaryStreamCall | |
| .. autoclass:: StreamUnaryCall | |
| .. autoclass:: StreamStreamCall | |
| Server-Side Context | |
| ^^^^^^^^^^^^^^^^^^^^^^^ | |
| .. autoclass:: ServicerContext | |
| Client-Side Interceptor | |
| ^^^^^^^^^^^^^^^^^^^^^^^ | |
| .. autoclass:: ClientCallDetails | |
| .. autoclass:: InterceptedUnaryUnaryCall | |
| .. autoclass:: ClientInterceptor | |
| .. autoclass:: UnaryUnaryClientInterceptor | |
| .. autoclass:: UnaryStreamClientInterceptor | |
| .. autoclass:: StreamUnaryClientInterceptor | |
| .. autoclass:: StreamStreamClientInterceptor | |
| Server-Side Interceptor | |
| ^^^^^^^^^^^^^^^^^^^^^^^ | |
| .. autoclass:: ServerInterceptor | |
| Multi-Callable Interfaces | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| .. autoclass:: UnaryUnaryMultiCallable | |
| .. autoclass:: UnaryStreamMultiCallable() | |
| .. autoclass:: StreamUnaryMultiCallable() | |
| .. autoclass:: StreamStreamMultiCallable() |