|
@@ -4,7 +4,8 @@
|
|
|
<html lang="en">
|
|
|
<head>
|
|
|
<meta charset="utf-8" />
|
|
|
- <title>grpc.experimental.aio._interceptor — gRPC Python 1.29.0 documentation</title>
|
|
|
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
+ <title>grpc.experimental.aio._interceptor — gRPC Python 1.31.0 documentation</title>
|
|
|
<link rel="stylesheet" href="../../../../_static/alabaster.css" type="text/css" />
|
|
|
<link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
|
|
|
<script id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></script>
|
|
@@ -29,7 +30,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
-<p class="blurb">1.29.0</p>
|
|
|
+<p class="blurb">1.31.0</p>
|
|
|
|
|
|
|
|
|
|
|
@@ -105,16 +106,20 @@
|
|
|
<span class="kn">import</span> <span class="nn">collections</span>
|
|
|
<span class="kn">import</span> <span class="nn">functools</span>
|
|
|
<span class="kn">from</span> <span class="nn">abc</span> <span class="kn">import</span> <span class="n">ABCMeta</span><span class="p">,</span> <span class="n">abstractmethod</span>
|
|
|
-<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Iterator</span><span class="p">,</span> <span class="n">Sequence</span><span class="p">,</span> <span class="n">Union</span><span class="p">,</span> <span class="n">Awaitable</span>
|
|
|
+<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Iterator</span><span class="p">,</span> <span class="n">Sequence</span><span class="p">,</span> <span class="n">Union</span><span class="p">,</span> <span class="n">Awaitable</span><span class="p">,</span> <span class="n">AsyncIterable</span>
|
|
|
|
|
|
<span class="kn">import</span> <span class="nn">grpc</span>
|
|
|
<span class="kn">from</span> <span class="nn">grpc._cython</span> <span class="kn">import</span> <span class="n">cygrpc</span>
|
|
|
|
|
|
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">_base_call</span>
|
|
|
-<span class="kn">from</span> <span class="nn">._call</span> <span class="kn">import</span> <span class="n">UnaryUnaryCall</span><span class="p">,</span> <span class="n">AioRpcError</span>
|
|
|
+<span class="kn">from</span> <span class="nn">._call</span> <span class="kn">import</span> <span class="n">UnaryUnaryCall</span><span class="p">,</span> <span class="n">UnaryStreamCall</span><span class="p">,</span> <span class="n">StreamUnaryCall</span><span class="p">,</span> <span class="n">StreamStreamCall</span><span class="p">,</span> <span class="n">AioRpcError</span>
|
|
|
+<span class="kn">from</span> <span class="nn">._call</span> <span class="kn">import</span> <span class="n">_RPC_ALREADY_FINISHED_DETAILS</span><span class="p">,</span> <span class="n">_RPC_HALF_CLOSED_DETAILS</span>
|
|
|
+<span class="kn">from</span> <span class="nn">._call</span> <span class="kn">import</span> <span class="n">_API_STYLE_ERROR</span>
|
|
|
<span class="kn">from</span> <span class="nn">._utils</span> <span class="kn">import</span> <span class="n">_timeout_to_deadline</span>
|
|
|
<span class="kn">from</span> <span class="nn">._typing</span> <span class="kn">import</span> <span class="p">(</span><span class="n">RequestType</span><span class="p">,</span> <span class="n">SerializingFunction</span><span class="p">,</span> <span class="n">DeserializingFunction</span><span class="p">,</span>
|
|
|
- <span class="n">MetadataType</span><span class="p">,</span> <span class="n">ResponseType</span><span class="p">,</span> <span class="n">DoneCallbackType</span><span class="p">)</span>
|
|
|
+ <span class="n">ResponseType</span><span class="p">,</span> <span class="n">DoneCallbackType</span><span class="p">,</span> <span class="n">RequestIterableType</span><span class="p">,</span>
|
|
|
+ <span class="n">ResponseIterableType</span><span class="p">)</span>
|
|
|
+<span class="kn">from</span> <span class="nn">._metadata</span> <span class="kn">import</span> <span class="n">Metadata</span>
|
|
|
|
|
|
<span class="n">_LOCAL_CANCELLATION_DETAILS</span> <span class="o">=</span> <span class="s1">'Locally cancelled by application!'</span>
|
|
|
|
|
@@ -162,18 +167,22 @@
|
|
|
<span class="sd"> metadata: Optional metadata to be transmitted to the service-side of</span>
|
|
|
<span class="sd"> the RPC.</span>
|
|
|
<span class="sd"> credentials: An optional CallCredentials for the RPC.</span>
|
|
|
-<span class="sd"> wait_for_ready: This is an EXPERIMENTAL argument. An optional flag to</span>
|
|
|
-<span class="sd"> enable wait for ready mechanism.</span>
|
|
|
+<span class="sd"> wait_for_ready: This is an EXPERIMENTAL argument. An optional</span>
|
|
|
+<span class="sd"> flag to enable :term:`wait_for_ready` mechanism.</span>
|
|
|
<span class="sd"> """</span>
|
|
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="nb">str</span>
|
|
|
<span class="n">timeout</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span>
|
|
|
- <span class="n">metadata</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">MetadataType</span><span class="p">]</span>
|
|
|
+ <span class="n">metadata</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Metadata</span><span class="p">]</span>
|
|
|
<span class="n">credentials</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">grpc</span><span class="o">.</span><span class="n">CallCredentials</span><span class="p">]</span>
|
|
|
<span class="n">wait_for_ready</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span></div>
|
|
|
|
|
|
|
|
|
-<div class="viewcode-block" id="UnaryUnaryClientInterceptor"><a class="viewcode-back" href="../../../../grpc_asyncio.html#grpc.experimental.aio.UnaryUnaryClientInterceptor">[docs]</a><span class="k">class</span> <span class="nc">UnaryUnaryClientInterceptor</span><span class="p">(</span><span class="n">metaclass</span><span class="o">=</span><span class="n">ABCMeta</span><span class="p">):</span>
|
|
|
+<span class="k">class</span> <span class="nc">ClientInterceptor</span><span class="p">(</span><span class="n">metaclass</span><span class="o">=</span><span class="n">ABCMeta</span><span class="p">):</span>
|
|
|
+ <span class="sd">"""Base class used for all Aio Client Interceptor classes"""</span>
|
|
|
+
|
|
|
+
|
|
|
+<div class="viewcode-block" id="UnaryUnaryClientInterceptor"><a class="viewcode-back" href="../../../../grpc_asyncio.html#grpc.experimental.aio.UnaryUnaryClientInterceptor">[docs]</a><span class="k">class</span> <span class="nc">UnaryUnaryClientInterceptor</span><span class="p">(</span><span class="n">ClientInterceptor</span><span class="p">,</span> <span class="n">metaclass</span><span class="o">=</span><span class="n">ABCMeta</span><span class="p">):</span>
|
|
|
<span class="sd">"""Affords intercepting unary-unary invocations."""</span>
|
|
|
|
|
|
<div class="viewcode-block" id="UnaryUnaryClientInterceptor.intercept_unary_unary"><a class="viewcode-back" href="../../../../grpc_asyncio.html#grpc.experimental.aio.UnaryUnaryClientInterceptor.intercept_unary_unary">[docs]</a> <span class="nd">@abstractmethod</span>
|
|
@@ -186,12 +195,12 @@
|
|
|
|
|
|
<span class="sd"> Args:</span>
|
|
|
<span class="sd"> continuation: A coroutine that proceeds with the invocation by</span>
|
|
|
-<span class="sd"> executing the next interceptor in chain or invoking the</span>
|
|
|
+<span class="sd"> executing the next interceptor in the chain or invoking the</span>
|
|
|
<span class="sd"> actual RPC on the underlying Channel. It is the interceptor's</span>
|
|
|
<span class="sd"> responsibility to call it if it decides to move the RPC forward.</span>
|
|
|
<span class="sd"> The interceptor can use</span>
|
|
|
-<span class="sd"> `response_future = await continuation(client_call_details, request)`</span>
|
|
|
-<span class="sd"> to continue with the RPC. `continuation` returns the response of the</span>
|
|
|
+<span class="sd"> `call = await continuation(client_call_details, request)`</span>
|
|
|
+<span class="sd"> to continue with the RPC. `continuation` returns the call to the</span>
|
|
|
<span class="sd"> RPC.</span>
|
|
|
<span class="sd"> client_call_details: A ClientCallDetails object describing the</span>
|
|
|
<span class="sd"> outgoing RPC.</span>
|
|
@@ -206,8 +215,131 @@
|
|
|
<span class="sd"> """</span></div></div>
|
|
|
|
|
|
|
|
|
-<div class="viewcode-block" id="InterceptedUnaryUnaryCall"><a class="viewcode-back" href="../../../../grpc_asyncio.html#grpc.experimental.aio.InterceptedUnaryUnaryCall">[docs]</a><span class="k">class</span> <span class="nc">InterceptedUnaryUnaryCall</span><span class="p">(</span><span class="n">_base_call</span><span class="o">.</span><span class="n">UnaryUnaryCall</span><span class="p">):</span>
|
|
|
- <span class="sd">"""Used for running a `UnaryUnaryCall` wrapped by interceptors.</span>
|
|
|
+<span class="k">class</span> <span class="nc">UnaryStreamClientInterceptor</span><span class="p">(</span><span class="n">ClientInterceptor</span><span class="p">,</span> <span class="n">metaclass</span><span class="o">=</span><span class="n">ABCMeta</span><span class="p">):</span>
|
|
|
+ <span class="sd">"""Affords intercepting unary-stream invocations."""</span>
|
|
|
+
|
|
|
+ <span class="nd">@abstractmethod</span>
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">intercept_unary_stream</span><span class="p">(</span>
|
|
|
+ <span class="bp">self</span><span class="p">,</span> <span class="n">continuation</span><span class="p">:</span> <span class="n">Callable</span><span class="p">[[</span><span class="n">ClientCallDetails</span><span class="p">,</span> <span class="n">RequestType</span><span class="p">],</span>
|
|
|
+ <span class="n">UnaryStreamCall</span><span class="p">],</span>
|
|
|
+ <span class="n">client_call_details</span><span class="p">:</span> <span class="n">ClientCallDetails</span><span class="p">,</span> <span class="n">request</span><span class="p">:</span> <span class="n">RequestType</span>
|
|
|
+ <span class="p">)</span> <span class="o">-></span> <span class="n">Union</span><span class="p">[</span><span class="n">ResponseIterableType</span><span class="p">,</span> <span class="n">UnaryStreamCall</span><span class="p">]:</span>
|
|
|
+ <span class="sd">"""Intercepts a unary-stream invocation asynchronously.</span>
|
|
|
+
|
|
|
+<span class="sd"> The function could return the call object or an asynchronous</span>
|
|
|
+<span class="sd"> iterator, in case of being an asyncrhonous iterator this will</span>
|
|
|
+<span class="sd"> become the source of the reads done by the caller.</span>
|
|
|
+
|
|
|
+<span class="sd"> Args:</span>
|
|
|
+<span class="sd"> continuation: A coroutine that proceeds with the invocation by</span>
|
|
|
+<span class="sd"> executing the next interceptor in the chain or invoking the</span>
|
|
|
+<span class="sd"> actual RPC on the underlying Channel. It is the interceptor's</span>
|
|
|
+<span class="sd"> responsibility to call it if it decides to move the RPC forward.</span>
|
|
|
+<span class="sd"> The interceptor can use</span>
|
|
|
+<span class="sd"> `call = await continuation(client_call_details, request)`</span>
|
|
|
+<span class="sd"> to continue with the RPC. `continuation` returns the call to the</span>
|
|
|
+<span class="sd"> RPC.</span>
|
|
|
+<span class="sd"> client_call_details: A ClientCallDetails object describing the</span>
|
|
|
+<span class="sd"> outgoing RPC.</span>
|
|
|
+<span class="sd"> request: The request value for the RPC.</span>
|
|
|
+
|
|
|
+<span class="sd"> Returns:</span>
|
|
|
+<span class="sd"> The RPC Call or an asynchronous iterator.</span>
|
|
|
+
|
|
|
+<span class="sd"> Raises:</span>
|
|
|
+<span class="sd"> AioRpcError: Indicating that the RPC terminated with non-OK status.</span>
|
|
|
+<span class="sd"> asyncio.CancelledError: Indicating that the RPC was canceled.</span>
|
|
|
+<span class="sd"> """</span>
|
|
|
+
|
|
|
+
|
|
|
+<span class="k">class</span> <span class="nc">StreamUnaryClientInterceptor</span><span class="p">(</span><span class="n">ClientInterceptor</span><span class="p">,</span> <span class="n">metaclass</span><span class="o">=</span><span class="n">ABCMeta</span><span class="p">):</span>
|
|
|
+ <span class="sd">"""Affords intercepting stream-unary invocations."""</span>
|
|
|
+
|
|
|
+ <span class="nd">@abstractmethod</span>
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">intercept_stream_unary</span><span class="p">(</span>
|
|
|
+ <span class="bp">self</span><span class="p">,</span>
|
|
|
+ <span class="n">continuation</span><span class="p">:</span> <span class="n">Callable</span><span class="p">[[</span><span class="n">ClientCallDetails</span><span class="p">,</span> <span class="n">RequestType</span><span class="p">],</span>
|
|
|
+ <span class="n">UnaryStreamCall</span><span class="p">],</span>
|
|
|
+ <span class="n">client_call_details</span><span class="p">:</span> <span class="n">ClientCallDetails</span><span class="p">,</span>
|
|
|
+ <span class="n">request_iterator</span><span class="p">:</span> <span class="n">RequestIterableType</span><span class="p">,</span>
|
|
|
+ <span class="p">)</span> <span class="o">-></span> <span class="n">StreamUnaryCall</span><span class="p">:</span>
|
|
|
+ <span class="sd">"""Intercepts a stream-unary invocation asynchronously.</span>
|
|
|
+
|
|
|
+<span class="sd"> Within the interceptor the usage of the call methods like `write` or</span>
|
|
|
+<span class="sd"> even awaiting the call should be done carefully, since the caller</span>
|
|
|
+<span class="sd"> could be expecting an untouched call, for example for start writing</span>
|
|
|
+<span class="sd"> messages to it.</span>
|
|
|
+
|
|
|
+<span class="sd"> Args:</span>
|
|
|
+<span class="sd"> continuation: A coroutine that proceeds with the invocation by</span>
|
|
|
+<span class="sd"> executing the next interceptor in the chain or invoking the</span>
|
|
|
+<span class="sd"> actual RPC on the underlying Channel. It is the interceptor's</span>
|
|
|
+<span class="sd"> responsibility to call it if it decides to move the RPC forward.</span>
|
|
|
+<span class="sd"> The interceptor can use</span>
|
|
|
+<span class="sd"> `call = await continuation(client_call_details, request_iterator)`</span>
|
|
|
+<span class="sd"> to continue with the RPC. `continuation` returns the call to the</span>
|
|
|
+<span class="sd"> RPC.</span>
|
|
|
+<span class="sd"> client_call_details: A ClientCallDetails object describing the</span>
|
|
|
+<span class="sd"> outgoing RPC.</span>
|
|
|
+<span class="sd"> request_iterator: The request iterator that will produce requests</span>
|
|
|
+<span class="sd"> for the RPC.</span>
|
|
|
+
|
|
|
+<span class="sd"> Returns:</span>
|
|
|
+<span class="sd"> The RPC Call.</span>
|
|
|
+
|
|
|
+<span class="sd"> Raises:</span>
|
|
|
+<span class="sd"> AioRpcError: Indicating that the RPC terminated with non-OK status.</span>
|
|
|
+<span class="sd"> asyncio.CancelledError: Indicating that the RPC was canceled.</span>
|
|
|
+<span class="sd"> """</span>
|
|
|
+
|
|
|
+
|
|
|
+<span class="k">class</span> <span class="nc">StreamStreamClientInterceptor</span><span class="p">(</span><span class="n">ClientInterceptor</span><span class="p">,</span> <span class="n">metaclass</span><span class="o">=</span><span class="n">ABCMeta</span><span class="p">):</span>
|
|
|
+ <span class="sd">"""Affords intercepting stream-stream invocations."""</span>
|
|
|
+
|
|
|
+ <span class="nd">@abstractmethod</span>
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">intercept_stream_stream</span><span class="p">(</span>
|
|
|
+ <span class="bp">self</span><span class="p">,</span>
|
|
|
+ <span class="n">continuation</span><span class="p">:</span> <span class="n">Callable</span><span class="p">[[</span><span class="n">ClientCallDetails</span><span class="p">,</span> <span class="n">RequestType</span><span class="p">],</span>
|
|
|
+ <span class="n">UnaryStreamCall</span><span class="p">],</span>
|
|
|
+ <span class="n">client_call_details</span><span class="p">:</span> <span class="n">ClientCallDetails</span><span class="p">,</span>
|
|
|
+ <span class="n">request_iterator</span><span class="p">:</span> <span class="n">RequestIterableType</span><span class="p">,</span>
|
|
|
+ <span class="p">)</span> <span class="o">-></span> <span class="n">Union</span><span class="p">[</span><span class="n">ResponseIterableType</span><span class="p">,</span> <span class="n">StreamStreamCall</span><span class="p">]:</span>
|
|
|
+ <span class="sd">"""Intercepts a stream-stream invocation asynchronously.</span>
|
|
|
+
|
|
|
+<span class="sd"> Within the interceptor the usage of the call methods like `write` or</span>
|
|
|
+<span class="sd"> even awaiting the call should be done carefully, since the caller</span>
|
|
|
+<span class="sd"> could be expecting an untouched call, for example for start writing</span>
|
|
|
+<span class="sd"> messages to it.</span>
|
|
|
+
|
|
|
+<span class="sd"> The function could return the call object or an asynchronous</span>
|
|
|
+<span class="sd"> iterator, in case of being an asyncrhonous iterator this will</span>
|
|
|
+<span class="sd"> become the source of the reads done by the caller.</span>
|
|
|
+
|
|
|
+<span class="sd"> Args:</span>
|
|
|
+<span class="sd"> continuation: A coroutine that proceeds with the invocation by</span>
|
|
|
+<span class="sd"> executing the next interceptor in the chain or invoking the</span>
|
|
|
+<span class="sd"> actual RPC on the underlying Channel. It is the interceptor's</span>
|
|
|
+<span class="sd"> responsibility to call it if it decides to move the RPC forward.</span>
|
|
|
+<span class="sd"> The interceptor can use</span>
|
|
|
+<span class="sd"> `call = await continuation(client_call_details, request_iterator)`</span>
|
|
|
+<span class="sd"> to continue with the RPC. `continuation` returns the call to the</span>
|
|
|
+<span class="sd"> RPC.</span>
|
|
|
+<span class="sd"> client_call_details: A ClientCallDetails object describing the</span>
|
|
|
+<span class="sd"> outgoing RPC.</span>
|
|
|
+<span class="sd"> request_iterator: The request iterator that will produce requests</span>
|
|
|
+<span class="sd"> for the RPC.</span>
|
|
|
+
|
|
|
+<span class="sd"> Returns:</span>
|
|
|
+<span class="sd"> The RPC Call or an asynchronous iterator.</span>
|
|
|
+
|
|
|
+<span class="sd"> Raises:</span>
|
|
|
+<span class="sd"> AioRpcError: Indicating that the RPC terminated with non-OK status.</span>
|
|
|
+<span class="sd"> asyncio.CancelledError: Indicating that the RPC was canceled.</span>
|
|
|
+<span class="sd"> """</span>
|
|
|
+
|
|
|
+
|
|
|
+<span class="k">class</span> <span class="nc">InterceptedCall</span><span class="p">:</span>
|
|
|
+ <span class="sd">"""Base implementation for all intercepted call arities.</span>
|
|
|
|
|
|
<span class="sd"> Interceptors might have some work to do before the RPC invocation with</span>
|
|
|
<span class="sd"> the capacity of changing the invocation parameters, and some work to do</span>
|
|
@@ -222,105 +354,70 @@
|
|
|
<span class="sd"> intercepted call, being at the same time the same call returned to the</span>
|
|
|
<span class="sd"> interceptors.</span>
|
|
|
|
|
|
-<span class="sd"> For most of the methods, like `initial_metadata()` the caller does not need</span>
|
|
|
-<span class="sd"> to wait until the interceptors task is finished, once the RPC is done the</span>
|
|
|
-<span class="sd"> caller will have the freedom for accessing to the results.</span>
|
|
|
-
|
|
|
-<span class="sd"> For the `__await__` method is it is proxied to the intercepted call only when</span>
|
|
|
-<span class="sd"> the interceptor task is finished.</span>
|
|
|
+<span class="sd"> As a base class for all of the interceptors implements the logic around</span>
|
|
|
+<span class="sd"> final status, metadata and cancellation.</span>
|
|
|
<span class="sd"> """</span>
|
|
|
|
|
|
- <span class="n">_loop</span><span class="p">:</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">AbstractEventLoop</span>
|
|
|
- <span class="n">_channel</span><span class="p">:</span> <span class="n">cygrpc</span><span class="o">.</span><span class="n">AioChannel</span>
|
|
|
- <span class="n">_cancelled_before_rpc</span><span class="p">:</span> <span class="nb">bool</span>
|
|
|
- <span class="n">_intercepted_call</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">_base_call</span><span class="o">.</span><span class="n">UnaryUnaryCall</span><span class="p">]</span>
|
|
|
- <span class="n">_intercepted_call_created</span><span class="p">:</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">Event</span>
|
|
|
<span class="n">_interceptors_task</span><span class="p">:</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">Task</span>
|
|
|
<span class="n">_pending_add_done_callbacks</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">DoneCallbackType</span><span class="p">]</span>
|
|
|
|
|
|
- <span class="c1"># pylint: disable=too-many-arguments</span>
|
|
|
- <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">interceptors</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">UnaryUnaryClientInterceptor</span><span class="p">],</span>
|
|
|
- <span class="n">request</span><span class="p">:</span> <span class="n">RequestType</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span>
|
|
|
- <span class="n">metadata</span><span class="p">:</span> <span class="n">MetadataType</span><span class="p">,</span>
|
|
|
- <span class="n">credentials</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">grpc</span><span class="o">.</span><span class="n">CallCredentials</span><span class="p">],</span>
|
|
|
- <span class="n">wait_for_ready</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">],</span> <span class="n">channel</span><span class="p">:</span> <span class="n">cygrpc</span><span class="o">.</span><span class="n">AioChannel</span><span class="p">,</span>
|
|
|
- <span class="n">method</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">request_serializer</span><span class="p">:</span> <span class="n">SerializingFunction</span><span class="p">,</span>
|
|
|
- <span class="n">response_deserializer</span><span class="p">:</span> <span class="n">DeserializingFunction</span><span class="p">,</span>
|
|
|
- <span class="n">loop</span><span class="p">:</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">AbstractEventLoop</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
- <span class="bp">self</span><span class="o">.</span><span class="n">_channel</span> <span class="o">=</span> <span class="n">channel</span>
|
|
|
- <span class="bp">self</span><span class="o">.</span><span class="n">_loop</span> <span class="o">=</span> <span class="n">loop</span>
|
|
|
- <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">create_task</span><span class="p">(</span>
|
|
|
- <span class="bp">self</span><span class="o">.</span><span class="n">_invoke</span><span class="p">(</span><span class="n">interceptors</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="n">timeout</span><span class="p">,</span> <span class="n">metadata</span><span class="p">,</span> <span class="n">credentials</span><span class="p">,</span>
|
|
|
- <span class="n">wait_for_ready</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">request_serializer</span><span class="p">,</span>
|
|
|
- <span class="n">response_deserializer</span><span class="p">))</span>
|
|
|
+ <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">interceptors_task</span><span class="p">:</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">Task</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span> <span class="o">=</span> <span class="n">interceptors_task</span>
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_pending_add_done_callbacks</span> <span class="o">=</span> <span class="p">[]</span>
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span><span class="o">.</span><span class="n">add_done_callback</span><span class="p">(</span>
|
|
|
- <span class="bp">self</span><span class="o">.</span><span class="n">_fire_pending_add_done_callbacks</span><span class="p">)</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_fire_or_add_pending_done_callbacks</span><span class="p">)</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">cancel</span><span class="p">()</span>
|
|
|
|
|
|
- <span class="c1"># pylint: disable=too-many-arguments</span>
|
|
|
- <span class="k">async</span> <span class="k">def</span> <span class="nf">_invoke</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">interceptors</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">UnaryUnaryClientInterceptor</span><span class="p">],</span>
|
|
|
- <span class="n">method</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span>
|
|
|
- <span class="n">metadata</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">MetadataType</span><span class="p">],</span>
|
|
|
- <span class="n">credentials</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">grpc</span><span class="o">.</span><span class="n">CallCredentials</span><span class="p">],</span>
|
|
|
- <span class="n">wait_for_ready</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">],</span> <span class="n">request</span><span class="p">:</span> <span class="n">RequestType</span><span class="p">,</span>
|
|
|
- <span class="n">request_serializer</span><span class="p">:</span> <span class="n">SerializingFunction</span><span class="p">,</span>
|
|
|
- <span class="n">response_deserializer</span><span class="p">:</span> <span class="n">DeserializingFunction</span>
|
|
|
- <span class="p">)</span> <span class="o">-></span> <span class="n">UnaryUnaryCall</span><span class="p">:</span>
|
|
|
- <span class="sd">"""Run the RPC call wrapped in interceptors"""</span>
|
|
|
-
|
|
|
- <span class="k">async</span> <span class="k">def</span> <span class="nf">_run_interceptor</span><span class="p">(</span>
|
|
|
- <span class="n">interceptors</span><span class="p">:</span> <span class="n">Iterator</span><span class="p">[</span><span class="n">UnaryUnaryClientInterceptor</span><span class="p">],</span>
|
|
|
- <span class="n">client_call_details</span><span class="p">:</span> <span class="n">ClientCallDetails</span><span class="p">,</span>
|
|
|
- <span class="n">request</span><span class="p">:</span> <span class="n">RequestType</span><span class="p">)</span> <span class="o">-></span> <span class="n">_base_call</span><span class="o">.</span><span class="n">UnaryUnaryCall</span><span class="p">:</span>
|
|
|
-
|
|
|
- <span class="n">interceptor</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="n">interceptors</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
|
-
|
|
|
- <span class="k">if</span> <span class="n">interceptor</span><span class="p">:</span>
|
|
|
- <span class="n">continuation</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">partial</span><span class="p">(</span><span class="n">_run_interceptor</span><span class="p">,</span> <span class="n">interceptors</span><span class="p">)</span>
|
|
|
-
|
|
|
- <span class="n">call_or_response</span> <span class="o">=</span> <span class="k">await</span> <span class="n">interceptor</span><span class="o">.</span><span class="n">intercept_unary_unary</span><span class="p">(</span>
|
|
|
- <span class="n">continuation</span><span class="p">,</span> <span class="n">client_call_details</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
|
|
|
+ <span class="k">def</span> <span class="nf">_fire_or_add_pending_done_callbacks</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
|
|
|
+ <span class="n">interceptors_task</span><span class="p">:</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">Task</span>
|
|
|
+ <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
|
|
|
- <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">call_or_response</span><span class="p">,</span> <span class="n">_base_call</span><span class="o">.</span><span class="n">UnaryUnaryCall</span><span class="p">):</span>
|
|
|
- <span class="k">return</span> <span class="n">call_or_response</span>
|
|
|
- <span class="k">else</span><span class="p">:</span>
|
|
|
- <span class="k">return</span> <span class="n">UnaryUnaryCallResponse</span><span class="p">(</span><span class="n">call_or_response</span><span class="p">)</span>
|
|
|
+ <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pending_add_done_callbacks</span><span class="p">:</span>
|
|
|
+ <span class="k">return</span>
|
|
|
|
|
|
- <span class="k">else</span><span class="p">:</span>
|
|
|
- <span class="k">return</span> <span class="n">UnaryUnaryCall</span><span class="p">(</span>
|
|
|
- <span class="n">request</span><span class="p">,</span> <span class="n">_timeout_to_deadline</span><span class="p">(</span><span class="n">client_call_details</span><span class="o">.</span><span class="n">timeout</span><span class="p">),</span>
|
|
|
- <span class="n">client_call_details</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span>
|
|
|
- <span class="n">client_call_details</span><span class="o">.</span><span class="n">credentials</span><span class="p">,</span>
|
|
|
- <span class="n">client_call_details</span><span class="o">.</span><span class="n">wait_for_ready</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_channel</span><span class="p">,</span>
|
|
|
- <span class="n">client_call_details</span><span class="o">.</span><span class="n">method</span><span class="p">,</span> <span class="n">request_serializer</span><span class="p">,</span>
|
|
|
- <span class="n">response_deserializer</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_loop</span><span class="p">)</span>
|
|
|
+ <span class="n">call_completed</span> <span class="o">=</span> <span class="kc">False</span>
|
|
|
|
|
|
- <span class="n">client_call_details</span> <span class="o">=</span> <span class="n">ClientCallDetails</span><span class="p">(</span><span class="n">method</span><span class="p">,</span> <span class="n">timeout</span><span class="p">,</span> <span class="n">metadata</span><span class="p">,</span>
|
|
|
- <span class="n">credentials</span><span class="p">,</span> <span class="n">wait_for_ready</span><span class="p">)</span>
|
|
|
- <span class="k">return</span> <span class="k">await</span> <span class="n">_run_interceptor</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="n">interceptors</span><span class="p">),</span> <span class="n">client_call_details</span><span class="p">,</span>
|
|
|
- <span class="n">request</span><span class="p">)</span>
|
|
|
+ <span class="k">try</span><span class="p">:</span>
|
|
|
+ <span class="n">call</span> <span class="o">=</span> <span class="n">interceptors_task</span><span class="o">.</span><span class="n">result</span><span class="p">()</span>
|
|
|
+ <span class="k">if</span> <span class="n">call</span><span class="o">.</span><span class="n">done</span><span class="p">():</span>
|
|
|
+ <span class="n">call_completed</span> <span class="o">=</span> <span class="kc">True</span>
|
|
|
+ <span class="k">except</span> <span class="p">(</span><span class="n">AioRpcError</span><span class="p">,</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">CancelledError</span><span class="p">):</span>
|
|
|
+ <span class="n">call_completed</span> <span class="o">=</span> <span class="kc">True</span>
|
|
|
|
|
|
- <span class="k">def</span> <span class="nf">_fire_pending_add_done_callbacks</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
|
|
|
- <span class="n">unused_task</span><span class="p">:</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">Task</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
- <span class="k">for</span> <span class="n">callback</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pending_add_done_callbacks</span><span class="p">:</span>
|
|
|
- <span class="n">callback</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
|
|
+ <span class="k">if</span> <span class="n">call_completed</span><span class="p">:</span>
|
|
|
+ <span class="k">for</span> <span class="n">callback</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pending_add_done_callbacks</span><span class="p">:</span>
|
|
|
+ <span class="n">callback</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
|
|
+ <span class="k">else</span><span class="p">:</span>
|
|
|
+ <span class="k">for</span> <span class="n">callback</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pending_add_done_callbacks</span><span class="p">:</span>
|
|
|
+ <span class="n">callback</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_wrap_add_done_callback</span><span class="p">,</span>
|
|
|
+ <span class="n">callback</span><span class="p">)</span>
|
|
|
+ <span class="n">call</span><span class="o">.</span><span class="n">add_done_callback</span><span class="p">(</span><span class="n">callback</span><span class="p">)</span>
|
|
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_pending_add_done_callbacks</span> <span class="o">=</span> <span class="p">[]</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">_wrap_add_done_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="p">:</span> <span class="n">DoneCallbackType</span><span class="p">,</span>
|
|
|
- <span class="n">unused_task</span><span class="p">:</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">Task</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="n">unused_call</span><span class="p">:</span> <span class="n">_base_call</span><span class="o">.</span><span class="n">Call</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
<span class="n">callback</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
|
|
|
|
|
-<div class="viewcode-block" id="InterceptedUnaryUnaryCall.cancel"><a class="viewcode-back" href="../../../../grpc_asyncio.html#grpc.experimental.aio.InterceptedUnaryUnaryCall.cancel">[docs]</a> <span class="k">def</span> <span class="nf">cancel</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
|
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span><span class="o">.</span><span class="n">done</span><span class="p">():</span>
|
|
|
+ <span class="k">def</span> <span class="nf">cancel</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
|
+ <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span><span class="o">.</span><span class="n">done</span><span class="p">():</span>
|
|
|
+ <span class="c1"># There is no yet the intercepted call available,</span>
|
|
|
+ <span class="c1"># Trying to cancel it by using the generic Asyncio</span>
|
|
|
+ <span class="c1"># cancellation method.</span>
|
|
|
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span><span class="o">.</span><span class="n">cancel</span><span class="p">()</span>
|
|
|
+
|
|
|
+ <span class="k">try</span><span class="p">:</span>
|
|
|
+ <span class="n">call</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span><span class="o">.</span><span class="n">result</span><span class="p">()</span>
|
|
|
+ <span class="k">except</span> <span class="n">AioRpcError</span><span class="p">:</span>
|
|
|
+ <span class="k">return</span> <span class="kc">False</span>
|
|
|
+ <span class="k">except</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">CancelledError</span><span class="p">:</span>
|
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
|
|
|
|
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span><span class="o">.</span><span class="n">cancel</span><span class="p">()</span></div>
|
|
|
+ <span class="k">return</span> <span class="n">call</span><span class="o">.</span><span class="n">cancel</span><span class="p">()</span>
|
|
|
|
|
|
-<div class="viewcode-block" id="InterceptedUnaryUnaryCall.cancelled"><a class="viewcode-back" href="../../../../grpc_asyncio.html#grpc.experimental.aio.InterceptedUnaryUnaryCall.cancelled">[docs]</a> <span class="k">def</span> <span class="nf">cancelled</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
|
+ <span class="k">def</span> <span class="nf">cancelled</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span><span class="o">.</span><span class="n">done</span><span class="p">():</span>
|
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
|
|
|
@@ -331,9 +428,9 @@
|
|
|
<span class="k">except</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">CancelledError</span><span class="p">:</span>
|
|
|
<span class="k">return</span> <span class="kc">True</span>
|
|
|
|
|
|
- <span class="k">return</span> <span class="n">call</span><span class="o">.</span><span class="n">cancelled</span><span class="p">()</span></div>
|
|
|
+ <span class="k">return</span> <span class="n">call</span><span class="o">.</span><span class="n">cancelled</span><span class="p">()</span>
|
|
|
|
|
|
-<div class="viewcode-block" id="InterceptedUnaryUnaryCall.done"><a class="viewcode-back" href="../../../../grpc_asyncio.html#grpc.experimental.aio.InterceptedUnaryUnaryCall.done">[docs]</a> <span class="k">def</span> <span class="nf">done</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
|
+ <span class="k">def</span> <span class="nf">done</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span><span class="o">.</span><span class="n">done</span><span class="p">():</span>
|
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
|
|
|
@@ -342,9 +439,9 @@
|
|
|
<span class="k">except</span> <span class="p">(</span><span class="n">AioRpcError</span><span class="p">,</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">CancelledError</span><span class="p">):</span>
|
|
|
<span class="k">return</span> <span class="kc">True</span>
|
|
|
|
|
|
- <span class="k">return</span> <span class="n">call</span><span class="o">.</span><span class="n">done</span><span class="p">()</span></div>
|
|
|
+ <span class="k">return</span> <span class="n">call</span><span class="o">.</span><span class="n">done</span><span class="p">()</span>
|
|
|
|
|
|
-<div class="viewcode-block" id="InterceptedUnaryUnaryCall.add_done_callback"><a class="viewcode-back" href="../../../../grpc_asyncio.html#grpc.experimental.aio.InterceptedUnaryUnaryCall.add_done_callback">[docs]</a> <span class="k">def</span> <span class="nf">add_done_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="p">:</span> <span class="n">DoneCallbackType</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="k">def</span> <span class="nf">add_done_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="p">:</span> <span class="n">DoneCallbackType</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span><span class="o">.</span><span class="n">done</span><span class="p">():</span>
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_pending_add_done_callbacks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">callback</span><span class="p">)</span>
|
|
|
<span class="k">return</span>
|
|
@@ -359,12 +456,12 @@
|
|
|
<span class="n">callback</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
|
|
<span class="k">else</span><span class="p">:</span>
|
|
|
<span class="n">callback</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_wrap_add_done_callback</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
|
|
|
- <span class="n">call</span><span class="o">.</span><span class="n">add_done_callback</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_wrap_add_done_callback</span><span class="p">)</span></div>
|
|
|
+ <span class="n">call</span><span class="o">.</span><span class="n">add_done_callback</span><span class="p">(</span><span class="n">callback</span><span class="p">)</span>
|
|
|
|
|
|
-<div class="viewcode-block" id="InterceptedUnaryUnaryCall.time_remaining"><a class="viewcode-back" href="../../../../grpc_asyncio.html#grpc.experimental.aio.InterceptedUnaryUnaryCall.time_remaining">[docs]</a> <span class="k">def</span> <span class="nf">time_remaining</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]:</span>
|
|
|
- <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
|
|
|
+ <span class="k">def</span> <span class="nf">time_remaining</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]:</span>
|
|
|
+ <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>
|
|
|
|
|
|
-<div class="viewcode-block" id="InterceptedUnaryUnaryCall.initial_metadata"><a class="viewcode-back" href="../../../../grpc_asyncio.html#grpc.experimental.aio.InterceptedUnaryUnaryCall.initial_metadata">[docs]</a> <span class="k">async</span> <span class="k">def</span> <span class="nf">initial_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">MetadataType</span><span class="p">]:</span>
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">initial_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">Metadata</span><span class="p">]:</span>
|
|
|
<span class="k">try</span><span class="p">:</span>
|
|
|
<span class="n">call</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span>
|
|
|
<span class="k">except</span> <span class="n">AioRpcError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
|
@@ -372,9 +469,9 @@
|
|
|
<span class="k">except</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">CancelledError</span><span class="p">:</span>
|
|
|
<span class="k">return</span> <span class="kc">None</span>
|
|
|
|
|
|
- <span class="k">return</span> <span class="k">await</span> <span class="n">call</span><span class="o">.</span><span class="n">initial_metadata</span><span class="p">()</span></div>
|
|
|
+ <span class="k">return</span> <span class="k">await</span> <span class="n">call</span><span class="o">.</span><span class="n">initial_metadata</span><span class="p">()</span>
|
|
|
|
|
|
-<div class="viewcode-block" id="InterceptedUnaryUnaryCall.trailing_metadata"><a class="viewcode-back" href="../../../../grpc_asyncio.html#grpc.experimental.aio.InterceptedUnaryUnaryCall.trailing_metadata">[docs]</a> <span class="k">async</span> <span class="k">def</span> <span class="nf">trailing_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">MetadataType</span><span class="p">]:</span>
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">trailing_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">Metadata</span><span class="p">]:</span>
|
|
|
<span class="k">try</span><span class="p">:</span>
|
|
|
<span class="n">call</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span>
|
|
|
<span class="k">except</span> <span class="n">AioRpcError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
|
@@ -382,9 +479,9 @@
|
|
|
<span class="k">except</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">CancelledError</span><span class="p">:</span>
|
|
|
<span class="k">return</span> <span class="kc">None</span>
|
|
|
|
|
|
- <span class="k">return</span> <span class="k">await</span> <span class="n">call</span><span class="o">.</span><span class="n">trailing_metadata</span><span class="p">()</span></div>
|
|
|
+ <span class="k">return</span> <span class="k">await</span> <span class="n">call</span><span class="o">.</span><span class="n">trailing_metadata</span><span class="p">()</span>
|
|
|
|
|
|
-<div class="viewcode-block" id="InterceptedUnaryUnaryCall.code"><a class="viewcode-back" href="../../../../grpc_asyncio.html#grpc.experimental.aio.InterceptedUnaryUnaryCall.code">[docs]</a> <span class="k">async</span> <span class="k">def</span> <span class="nf">code</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">grpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="p">:</span>
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">code</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">grpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="p">:</span>
|
|
|
<span class="k">try</span><span class="p">:</span>
|
|
|
<span class="n">call</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span>
|
|
|
<span class="k">except</span> <span class="n">AioRpcError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
|
@@ -392,9 +489,9 @@
|
|
|
<span class="k">except</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">CancelledError</span><span class="p">:</span>
|
|
|
<span class="k">return</span> <span class="n">grpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">CANCELLED</span>
|
|
|
|
|
|
- <span class="k">return</span> <span class="k">await</span> <span class="n">call</span><span class="o">.</span><span class="n">code</span><span class="p">()</span></div>
|
|
|
+ <span class="k">return</span> <span class="k">await</span> <span class="n">call</span><span class="o">.</span><span class="n">code</span><span class="p">()</span>
|
|
|
|
|
|
-<div class="viewcode-block" id="InterceptedUnaryUnaryCall.details"><a class="viewcode-back" href="../../../../grpc_asyncio.html#grpc.experimental.aio.InterceptedUnaryUnaryCall.details">[docs]</a> <span class="k">async</span> <span class="k">def</span> <span class="nf">details</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">details</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
|
<span class="k">try</span><span class="p">:</span>
|
|
|
<span class="n">call</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span>
|
|
|
<span class="k">except</span> <span class="n">AioRpcError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
|
@@ -402,7 +499,7 @@
|
|
|
<span class="k">except</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">CancelledError</span><span class="p">:</span>
|
|
|
<span class="k">return</span> <span class="n">_LOCAL_CANCELLATION_DETAILS</span>
|
|
|
|
|
|
- <span class="k">return</span> <span class="k">await</span> <span class="n">call</span><span class="o">.</span><span class="n">details</span><span class="p">()</span></div>
|
|
|
+ <span class="k">return</span> <span class="k">await</span> <span class="n">call</span><span class="o">.</span><span class="n">details</span><span class="p">()</span>
|
|
|
|
|
|
<span class="k">async</span> <span class="k">def</span> <span class="nf">debug_error_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
|
|
|
<span class="k">try</span><span class="p">:</span>
|
|
@@ -414,14 +511,438 @@
|
|
|
|
|
|
<span class="k">return</span> <span class="k">await</span> <span class="n">call</span><span class="o">.</span><span class="n">debug_error_string</span><span class="p">()</span>
|
|
|
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">wait_for_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="n">call</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span>
|
|
|
+ <span class="k">return</span> <span class="k">await</span> <span class="n">call</span><span class="o">.</span><span class="n">wait_for_connection</span><span class="p">()</span>
|
|
|
+
|
|
|
+
|
|
|
+<span class="k">class</span> <span class="nc">_InterceptedUnaryResponseMixin</span><span class="p">:</span>
|
|
|
+
|
|
|
<span class="k">def</span> <span class="fm">__await__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
|
<span class="n">call</span> <span class="o">=</span> <span class="k">yield from</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span><span class="o">.</span><span class="fm">__await__</span><span class="p">()</span>
|
|
|
<span class="n">response</span> <span class="o">=</span> <span class="k">yield from</span> <span class="n">call</span><span class="o">.</span><span class="fm">__await__</span><span class="p">()</span>
|
|
|
<span class="k">return</span> <span class="n">response</span>
|
|
|
|
|
|
-<div class="viewcode-block" id="InterceptedUnaryUnaryCall.wait_for_connection"><a class="viewcode-back" href="../../../../grpc_asyncio.html#grpc.experimental.aio.InterceptedUnaryUnaryCall.wait_for_connection">[docs]</a> <span class="k">async</span> <span class="k">def</span> <span class="nf">wait_for_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+
|
|
|
+<span class="k">class</span> <span class="nc">_InterceptedStreamResponseMixin</span><span class="p">:</span>
|
|
|
+ <span class="n">_response_aiter</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">AsyncIterable</span><span class="p">[</span><span class="n">ResponseType</span><span class="p">]]</span>
|
|
|
+
|
|
|
+ <span class="k">def</span> <span class="nf">_init_stream_response_mixin</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="c1"># Is initalized later, otherwise if the iterator is not finnally</span>
|
|
|
+ <span class="c1"># consumed a logging warning is emmited by Asyncio.</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_response_aiter</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">_wait_for_interceptor_task_response_iterator</span><span class="p">(</span><span class="bp">self</span>
|
|
|
+ <span class="p">)</span> <span class="o">-></span> <span class="n">ResponseType</span><span class="p">:</span>
|
|
|
<span class="n">call</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span>
|
|
|
- <span class="k">return</span> <span class="k">await</span> <span class="n">call</span><span class="o">.</span><span class="n">wait_for_connection</span><span class="p">()</span></div></div>
|
|
|
+ <span class="k">async</span> <span class="k">for</span> <span class="n">response</span> <span class="ow">in</span> <span class="n">call</span><span class="p">:</span>
|
|
|
+ <span class="k">yield</span> <span class="n">response</span>
|
|
|
+
|
|
|
+ <span class="k">def</span> <span class="fm">__aiter__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">AsyncIterable</span><span class="p">[</span><span class="n">ResponseType</span><span class="p">]:</span>
|
|
|
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_response_aiter</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_response_aiter</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_wait_for_interceptor_task_response_iterator</span><span class="p">(</span>
|
|
|
+ <span class="p">)</span>
|
|
|
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_response_aiter</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">ResponseType</span><span class="p">:</span>
|
|
|
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_response_aiter</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_response_aiter</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_wait_for_interceptor_task_response_iterator</span><span class="p">(</span>
|
|
|
+ <span class="p">)</span>
|
|
|
+ <span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_response_aiter</span><span class="o">.</span><span class="n">asend</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
|
|
|
+
|
|
|
+
|
|
|
+<span class="k">class</span> <span class="nc">_InterceptedStreamRequestMixin</span><span class="p">:</span>
|
|
|
+
|
|
|
+ <span class="n">_write_to_iterator_async_gen</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">AsyncIterable</span><span class="p">[</span><span class="n">RequestType</span><span class="p">]]</span>
|
|
|
+ <span class="n">_write_to_iterator_queue</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">asyncio</span><span class="o">.</span><span class="n">Queue</span><span class="p">]</span>
|
|
|
+
|
|
|
+ <span class="n">_FINISH_ITERATOR_SENTINEL</span> <span class="o">=</span> <span class="nb">object</span><span class="p">()</span>
|
|
|
+
|
|
|
+ <span class="k">def</span> <span class="nf">_init_stream_request_mixin</span><span class="p">(</span>
|
|
|
+ <span class="bp">self</span><span class="p">,</span> <span class="n">request_iterator</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">RequestIterableType</span><span class="p">]</span>
|
|
|
+ <span class="p">)</span> <span class="o">-></span> <span class="n">RequestIterableType</span><span class="p">:</span>
|
|
|
+
|
|
|
+ <span class="k">if</span> <span class="n">request_iterator</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="c1"># We provide our own request iterator which is a proxy</span>
|
|
|
+ <span class="c1"># of the futures writes that will be done by the caller.</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_write_to_iterator_queue</span> <span class="o">=</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">Queue</span><span class="p">(</span><span class="n">maxsize</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_write_to_iterator_async_gen</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_proxy_writes_as_request_iterator</span><span class="p">(</span>
|
|
|
+ <span class="p">)</span>
|
|
|
+ <span class="n">request_iterator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_write_to_iterator_async_gen</span>
|
|
|
+ <span class="k">else</span><span class="p">:</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_write_to_iterator_queue</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
+
|
|
|
+ <span class="k">return</span> <span class="n">request_iterator</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">_proxy_writes_as_request_iterator</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
|
+ <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span>
|
|
|
+
|
|
|
+ <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
|
|
|
+ <span class="n">value</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_write_to_iterator_queue</span><span class="o">.</span><span class="n">get</span><span class="p">()</span>
|
|
|
+ <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="n">_InterceptedStreamRequestMixin</span><span class="o">.</span><span class="n">_FINISH_ITERATOR_SENTINEL</span><span class="p">:</span>
|
|
|
+ <span class="k">break</span>
|
|
|
+ <span class="k">yield</span> <span class="n">value</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">:</span> <span class="n">RequestType</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="c1"># If no queue was created it means that requests</span>
|
|
|
+ <span class="c1"># should be expected through an iterators provided</span>
|
|
|
+ <span class="c1"># by the caller.</span>
|
|
|
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_write_to_iterator_queue</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="k">raise</span> <span class="n">cygrpc</span><span class="o">.</span><span class="n">UsageError</span><span class="p">(</span><span class="n">_API_STYLE_ERROR</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">try</span><span class="p">:</span>
|
|
|
+ <span class="n">call</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span>
|
|
|
+ <span class="k">except</span> <span class="p">(</span><span class="n">asyncio</span><span class="o">.</span><span class="n">CancelledError</span><span class="p">,</span> <span class="n">AioRpcError</span><span class="p">):</span>
|
|
|
+ <span class="k">raise</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">InvalidStateError</span><span class="p">(</span><span class="n">_RPC_ALREADY_FINISHED_DETAILS</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">if</span> <span class="n">call</span><span class="o">.</span><span class="n">done</span><span class="p">():</span>
|
|
|
+ <span class="k">raise</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">InvalidStateError</span><span class="p">(</span><span class="n">_RPC_ALREADY_FINISHED_DETAILS</span><span class="p">)</span>
|
|
|
+ <span class="k">elif</span> <span class="n">call</span><span class="o">.</span><span class="n">_done_writing_flag</span><span class="p">:</span>
|
|
|
+ <span class="k">raise</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">InvalidStateError</span><span class="p">(</span><span class="n">_RPC_HALF_CLOSED_DETAILS</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="c1"># Write might never end up since the call could abrubtly finish,</span>
|
|
|
+ <span class="c1"># we give up on the first awaitable object that finishes.</span>
|
|
|
+ <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">wait</span><span class="p">(</span>
|
|
|
+ <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_write_to_iterator_queue</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="n">request</span><span class="p">),</span> <span class="n">call</span><span class="o">.</span><span class="n">code</span><span class="p">()),</span>
|
|
|
+ <span class="n">return_when</span><span class="o">=</span><span class="n">asyncio</span><span class="o">.</span><span class="n">FIRST_COMPLETED</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">if</span> <span class="n">call</span><span class="o">.</span><span class="n">done</span><span class="p">():</span>
|
|
|
+ <span class="k">raise</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">InvalidStateError</span><span class="p">(</span><span class="n">_RPC_ALREADY_FINISHED_DETAILS</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">done_writing</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="sd">"""Signal peer that client is done writing.</span>
|
|
|
+
|
|
|
+<span class="sd"> This method is idempotent.</span>
|
|
|
+<span class="sd"> """</span>
|
|
|
+ <span class="c1"># If no queue was created it means that requests</span>
|
|
|
+ <span class="c1"># should be expected through an iterators provided</span>
|
|
|
+ <span class="c1"># by the caller.</span>
|
|
|
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_write_to_iterator_queue</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="k">raise</span> <span class="n">cygrpc</span><span class="o">.</span><span class="n">UsageError</span><span class="p">(</span><span class="n">_API_STYLE_ERROR</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">try</span><span class="p">:</span>
|
|
|
+ <span class="n">call</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_interceptors_task</span>
|
|
|
+ <span class="k">except</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">CancelledError</span><span class="p">:</span>
|
|
|
+ <span class="k">raise</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">InvalidStateError</span><span class="p">(</span><span class="n">_RPC_ALREADY_FINISHED_DETAILS</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="c1"># Write might never end up since the call could abrubtly finish,</span>
|
|
|
+ <span class="c1"># we give up on the first awaitable object that finishes.</span>
|
|
|
+ <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">wait</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">_write_to_iterator_queue</span><span class="o">.</span><span class="n">put</span><span class="p">(</span>
|
|
|
+ <span class="n">_InterceptedStreamRequestMixin</span><span class="o">.</span><span class="n">_FINISH_ITERATOR_SENTINEL</span><span class="p">),</span>
|
|
|
+ <span class="n">call</span><span class="o">.</span><span class="n">code</span><span class="p">()),</span>
|
|
|
+ <span class="n">return_when</span><span class="o">=</span><span class="n">asyncio</span><span class="o">.</span><span class="n">FIRST_COMPLETED</span><span class="p">)</span>
|
|
|
+
|
|
|
+
|
|
|
+<div class="viewcode-block" id="InterceptedUnaryUnaryCall"><a class="viewcode-back" href="../../../../grpc_asyncio.html#grpc.experimental.aio.InterceptedUnaryUnaryCall">[docs]</a><span class="k">class</span> <span class="nc">InterceptedUnaryUnaryCall</span><span class="p">(</span><span class="n">_InterceptedUnaryResponseMixin</span><span class="p">,</span> <span class="n">InterceptedCall</span><span class="p">,</span>
|
|
|
+ <span class="n">_base_call</span><span class="o">.</span><span class="n">UnaryUnaryCall</span><span class="p">):</span>
|
|
|
+ <span class="sd">"""Used for running a `UnaryUnaryCall` wrapped by interceptors.</span>
|
|
|
+
|
|
|
+<span class="sd"> For the `__await__` method is it is proxied to the intercepted call only when</span>
|
|
|
+<span class="sd"> the interceptor task is finished.</span>
|
|
|
+<span class="sd"> """</span>
|
|
|
+
|
|
|
+ <span class="n">_loop</span><span class="p">:</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">AbstractEventLoop</span>
|
|
|
+ <span class="n">_channel</span><span class="p">:</span> <span class="n">cygrpc</span><span class="o">.</span><span class="n">AioChannel</span>
|
|
|
+
|
|
|
+ <span class="c1"># pylint: disable=too-many-arguments</span>
|
|
|
+ <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">interceptors</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">UnaryUnaryClientInterceptor</span><span class="p">],</span>
|
|
|
+ <span class="n">request</span><span class="p">:</span> <span class="n">RequestType</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span>
|
|
|
+ <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span>
|
|
|
+ <span class="n">credentials</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">grpc</span><span class="o">.</span><span class="n">CallCredentials</span><span class="p">],</span>
|
|
|
+ <span class="n">wait_for_ready</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">],</span> <span class="n">channel</span><span class="p">:</span> <span class="n">cygrpc</span><span class="o">.</span><span class="n">AioChannel</span><span class="p">,</span>
|
|
|
+ <span class="n">method</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">request_serializer</span><span class="p">:</span> <span class="n">SerializingFunction</span><span class="p">,</span>
|
|
|
+ <span class="n">response_deserializer</span><span class="p">:</span> <span class="n">DeserializingFunction</span><span class="p">,</span>
|
|
|
+ <span class="n">loop</span><span class="p">:</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">AbstractEventLoop</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_loop</span> <span class="o">=</span> <span class="n">loop</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_channel</span> <span class="o">=</span> <span class="n">channel</span>
|
|
|
+ <span class="n">interceptors_task</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">create_task</span><span class="p">(</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_invoke</span><span class="p">(</span><span class="n">interceptors</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="n">timeout</span><span class="p">,</span> <span class="n">metadata</span><span class="p">,</span> <span class="n">credentials</span><span class="p">,</span>
|
|
|
+ <span class="n">wait_for_ready</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">request_serializer</span><span class="p">,</span>
|
|
|
+ <span class="n">response_deserializer</span><span class="p">))</span>
|
|
|
+ <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">interceptors_task</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="c1"># pylint: disable=too-many-arguments</span>
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">_invoke</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">interceptors</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">UnaryUnaryClientInterceptor</span><span class="p">],</span>
|
|
|
+ <span class="n">method</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span>
|
|
|
+ <span class="n">metadata</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Metadata</span><span class="p">],</span>
|
|
|
+ <span class="n">credentials</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">grpc</span><span class="o">.</span><span class="n">CallCredentials</span><span class="p">],</span>
|
|
|
+ <span class="n">wait_for_ready</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">],</span> <span class="n">request</span><span class="p">:</span> <span class="n">RequestType</span><span class="p">,</span>
|
|
|
+ <span class="n">request_serializer</span><span class="p">:</span> <span class="n">SerializingFunction</span><span class="p">,</span>
|
|
|
+ <span class="n">response_deserializer</span><span class="p">:</span> <span class="n">DeserializingFunction</span>
|
|
|
+ <span class="p">)</span> <span class="o">-></span> <span class="n">UnaryUnaryCall</span><span class="p">:</span>
|
|
|
+ <span class="sd">"""Run the RPC call wrapped in interceptors"""</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">_run_interceptor</span><span class="p">(</span>
|
|
|
+ <span class="n">interceptors</span><span class="p">:</span> <span class="n">Iterator</span><span class="p">[</span><span class="n">UnaryUnaryClientInterceptor</span><span class="p">],</span>
|
|
|
+ <span class="n">client_call_details</span><span class="p">:</span> <span class="n">ClientCallDetails</span><span class="p">,</span>
|
|
|
+ <span class="n">request</span><span class="p">:</span> <span class="n">RequestType</span><span class="p">)</span> <span class="o">-></span> <span class="n">_base_call</span><span class="o">.</span><span class="n">UnaryUnaryCall</span><span class="p">:</span>
|
|
|
+
|
|
|
+ <span class="n">interceptor</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="n">interceptors</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">if</span> <span class="n">interceptor</span><span class="p">:</span>
|
|
|
+ <span class="n">continuation</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">partial</span><span class="p">(</span><span class="n">_run_interceptor</span><span class="p">,</span> <span class="n">interceptors</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="n">call_or_response</span> <span class="o">=</span> <span class="k">await</span> <span class="n">interceptor</span><span class="o">.</span><span class="n">intercept_unary_unary</span><span class="p">(</span>
|
|
|
+ <span class="n">continuation</span><span class="p">,</span> <span class="n">client_call_details</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">call_or_response</span><span class="p">,</span> <span class="n">_base_call</span><span class="o">.</span><span class="n">UnaryUnaryCall</span><span class="p">):</span>
|
|
|
+ <span class="k">return</span> <span class="n">call_or_response</span>
|
|
|
+ <span class="k">else</span><span class="p">:</span>
|
|
|
+ <span class="k">return</span> <span class="n">UnaryUnaryCallResponse</span><span class="p">(</span><span class="n">call_or_response</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">else</span><span class="p">:</span>
|
|
|
+ <span class="k">return</span> <span class="n">UnaryUnaryCall</span><span class="p">(</span>
|
|
|
+ <span class="n">request</span><span class="p">,</span> <span class="n">_timeout_to_deadline</span><span class="p">(</span><span class="n">client_call_details</span><span class="o">.</span><span class="n">timeout</span><span class="p">),</span>
|
|
|
+ <span class="n">client_call_details</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span>
|
|
|
+ <span class="n">client_call_details</span><span class="o">.</span><span class="n">credentials</span><span class="p">,</span>
|
|
|
+ <span class="n">client_call_details</span><span class="o">.</span><span class="n">wait_for_ready</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_channel</span><span class="p">,</span>
|
|
|
+ <span class="n">client_call_details</span><span class="o">.</span><span class="n">method</span><span class="p">,</span> <span class="n">request_serializer</span><span class="p">,</span>
|
|
|
+ <span class="n">response_deserializer</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_loop</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="n">client_call_details</span> <span class="o">=</span> <span class="n">ClientCallDetails</span><span class="p">(</span><span class="n">method</span><span class="p">,</span> <span class="n">timeout</span><span class="p">,</span> <span class="n">metadata</span><span class="p">,</span>
|
|
|
+ <span class="n">credentials</span><span class="p">,</span> <span class="n">wait_for_ready</span><span class="p">)</span>
|
|
|
+ <span class="k">return</span> <span class="k">await</span> <span class="n">_run_interceptor</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="n">interceptors</span><span class="p">),</span> <span class="n">client_call_details</span><span class="p">,</span>
|
|
|
+ <span class="n">request</span><span class="p">)</span>
|
|
|
+
|
|
|
+<div class="viewcode-block" id="InterceptedUnaryUnaryCall.time_remaining"><a class="viewcode-back" href="../../../../grpc_asyncio.html#grpc.experimental.aio.InterceptedUnaryUnaryCall.time_remaining">[docs]</a> <span class="k">def</span> <span class="nf">time_remaining</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]:</span>
|
|
|
+ <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div>
|
|
|
+
|
|
|
+
|
|
|
+<span class="k">class</span> <span class="nc">InterceptedUnaryStreamCall</span><span class="p">(</span><span class="n">_InterceptedStreamResponseMixin</span><span class="p">,</span>
|
|
|
+ <span class="n">InterceptedCall</span><span class="p">,</span> <span class="n">_base_call</span><span class="o">.</span><span class="n">UnaryStreamCall</span><span class="p">):</span>
|
|
|
+ <span class="sd">"""Used for running a `UnaryStreamCall` wrapped by interceptors."""</span>
|
|
|
+
|
|
|
+ <span class="n">_loop</span><span class="p">:</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">AbstractEventLoop</span>
|
|
|
+ <span class="n">_channel</span><span class="p">:</span> <span class="n">cygrpc</span><span class="o">.</span><span class="n">AioChannel</span>
|
|
|
+ <span class="n">_last_returned_call_from_interceptors</span> <span class="o">=</span> <span class="n">Optional</span><span class="p">[</span><span class="n">_base_call</span><span class="o">.</span><span class="n">UnaryStreamCall</span><span class="p">]</span>
|
|
|
+
|
|
|
+ <span class="c1"># pylint: disable=too-many-arguments</span>
|
|
|
+ <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">interceptors</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">UnaryStreamClientInterceptor</span><span class="p">],</span>
|
|
|
+ <span class="n">request</span><span class="p">:</span> <span class="n">RequestType</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span>
|
|
|
+ <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span>
|
|
|
+ <span class="n">credentials</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">grpc</span><span class="o">.</span><span class="n">CallCredentials</span><span class="p">],</span>
|
|
|
+ <span class="n">wait_for_ready</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">],</span> <span class="n">channel</span><span class="p">:</span> <span class="n">cygrpc</span><span class="o">.</span><span class="n">AioChannel</span><span class="p">,</span>
|
|
|
+ <span class="n">method</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">request_serializer</span><span class="p">:</span> <span class="n">SerializingFunction</span><span class="p">,</span>
|
|
|
+ <span class="n">response_deserializer</span><span class="p">:</span> <span class="n">DeserializingFunction</span><span class="p">,</span>
|
|
|
+ <span class="n">loop</span><span class="p">:</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">AbstractEventLoop</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_loop</span> <span class="o">=</span> <span class="n">loop</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_channel</span> <span class="o">=</span> <span class="n">channel</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_init_stream_response_mixin</span><span class="p">()</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_last_returned_call_from_interceptors</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
+ <span class="n">interceptors_task</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">create_task</span><span class="p">(</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_invoke</span><span class="p">(</span><span class="n">interceptors</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="n">timeout</span><span class="p">,</span> <span class="n">metadata</span><span class="p">,</span> <span class="n">credentials</span><span class="p">,</span>
|
|
|
+ <span class="n">wait_for_ready</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">request_serializer</span><span class="p">,</span>
|
|
|
+ <span class="n">response_deserializer</span><span class="p">))</span>
|
|
|
+ <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">interceptors_task</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="c1"># pylint: disable=too-many-arguments</span>
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">_invoke</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">interceptors</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">UnaryUnaryClientInterceptor</span><span class="p">],</span>
|
|
|
+ <span class="n">method</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span>
|
|
|
+ <span class="n">metadata</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Metadata</span><span class="p">],</span>
|
|
|
+ <span class="n">credentials</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">grpc</span><span class="o">.</span><span class="n">CallCredentials</span><span class="p">],</span>
|
|
|
+ <span class="n">wait_for_ready</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">],</span> <span class="n">request</span><span class="p">:</span> <span class="n">RequestType</span><span class="p">,</span>
|
|
|
+ <span class="n">request_serializer</span><span class="p">:</span> <span class="n">SerializingFunction</span><span class="p">,</span>
|
|
|
+ <span class="n">response_deserializer</span><span class="p">:</span> <span class="n">DeserializingFunction</span>
|
|
|
+ <span class="p">)</span> <span class="o">-></span> <span class="n">UnaryStreamCall</span><span class="p">:</span>
|
|
|
+ <span class="sd">"""Run the RPC call wrapped in interceptors"""</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">_run_interceptor</span><span class="p">(</span>
|
|
|
+ <span class="n">interceptors</span><span class="p">:</span> <span class="n">Iterator</span><span class="p">[</span><span class="n">UnaryStreamClientInterceptor</span><span class="p">],</span>
|
|
|
+ <span class="n">client_call_details</span><span class="p">:</span> <span class="n">ClientCallDetails</span><span class="p">,</span>
|
|
|
+ <span class="n">request</span><span class="p">:</span> <span class="n">RequestType</span><span class="p">,</span>
|
|
|
+ <span class="p">)</span> <span class="o">-></span> <span class="n">_base_call</span><span class="o">.</span><span class="n">UnaryUnaryCall</span><span class="p">:</span>
|
|
|
+
|
|
|
+ <span class="n">interceptor</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="n">interceptors</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">if</span> <span class="n">interceptor</span><span class="p">:</span>
|
|
|
+ <span class="n">continuation</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">partial</span><span class="p">(</span><span class="n">_run_interceptor</span><span class="p">,</span> <span class="n">interceptors</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="n">call_or_response_iterator</span> <span class="o">=</span> <span class="k">await</span> <span class="n">interceptor</span><span class="o">.</span><span class="n">intercept_unary_stream</span><span class="p">(</span>
|
|
|
+ <span class="n">continuation</span><span class="p">,</span> <span class="n">client_call_details</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">call_or_response_iterator</span><span class="p">,</span>
|
|
|
+ <span class="n">_base_call</span><span class="o">.</span><span class="n">UnaryStreamCall</span><span class="p">):</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_last_returned_call_from_interceptors</span> <span class="o">=</span> <span class="n">call_or_response_iterator</span>
|
|
|
+ <span class="k">else</span><span class="p">:</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_last_returned_call_from_interceptors</span> <span class="o">=</span> <span class="n">UnaryStreamCallResponseIterator</span><span class="p">(</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_last_returned_call_from_interceptors</span><span class="p">,</span>
|
|
|
+ <span class="n">call_or_response_iterator</span><span class="p">)</span>
|
|
|
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_last_returned_call_from_interceptors</span>
|
|
|
+ <span class="k">else</span><span class="p">:</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_last_returned_call_from_interceptors</span> <span class="o">=</span> <span class="n">UnaryStreamCall</span><span class="p">(</span>
|
|
|
+ <span class="n">request</span><span class="p">,</span> <span class="n">_timeout_to_deadline</span><span class="p">(</span><span class="n">client_call_details</span><span class="o">.</span><span class="n">timeout</span><span class="p">),</span>
|
|
|
+ <span class="n">client_call_details</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span>
|
|
|
+ <span class="n">client_call_details</span><span class="o">.</span><span class="n">credentials</span><span class="p">,</span>
|
|
|
+ <span class="n">client_call_details</span><span class="o">.</span><span class="n">wait_for_ready</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_channel</span><span class="p">,</span>
|
|
|
+ <span class="n">client_call_details</span><span class="o">.</span><span class="n">method</span><span class="p">,</span> <span class="n">request_serializer</span><span class="p">,</span>
|
|
|
+ <span class="n">response_deserializer</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_loop</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_last_returned_call_from_interceptors</span>
|
|
|
+
|
|
|
+ <span class="n">client_call_details</span> <span class="o">=</span> <span class="n">ClientCallDetails</span><span class="p">(</span><span class="n">method</span><span class="p">,</span> <span class="n">timeout</span><span class="p">,</span> <span class="n">metadata</span><span class="p">,</span>
|
|
|
+ <span class="n">credentials</span><span class="p">,</span> <span class="n">wait_for_ready</span><span class="p">)</span>
|
|
|
+ <span class="k">return</span> <span class="k">await</span> <span class="n">_run_interceptor</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="n">interceptors</span><span class="p">),</span> <span class="n">client_call_details</span><span class="p">,</span>
|
|
|
+ <span class="n">request</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">def</span> <span class="nf">time_remaining</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]:</span>
|
|
|
+ <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>
|
|
|
+
|
|
|
+
|
|
|
+<span class="k">class</span> <span class="nc">InterceptedStreamUnaryCall</span><span class="p">(</span><span class="n">_InterceptedUnaryResponseMixin</span><span class="p">,</span>
|
|
|
+ <span class="n">_InterceptedStreamRequestMixin</span><span class="p">,</span>
|
|
|
+ <span class="n">InterceptedCall</span><span class="p">,</span> <span class="n">_base_call</span><span class="o">.</span><span class="n">StreamUnaryCall</span><span class="p">):</span>
|
|
|
+ <span class="sd">"""Used for running a `StreamUnaryCall` wrapped by interceptors.</span>
|
|
|
+
|
|
|
+<span class="sd"> For the `__await__` method is it is proxied to the intercepted call only when</span>
|
|
|
+<span class="sd"> the interceptor task is finished.</span>
|
|
|
+<span class="sd"> """</span>
|
|
|
+
|
|
|
+ <span class="n">_loop</span><span class="p">:</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">AbstractEventLoop</span>
|
|
|
+ <span class="n">_channel</span><span class="p">:</span> <span class="n">cygrpc</span><span class="o">.</span><span class="n">AioChannel</span>
|
|
|
+
|
|
|
+ <span class="c1"># pylint: disable=too-many-arguments</span>
|
|
|
+ <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">interceptors</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">StreamUnaryClientInterceptor</span><span class="p">],</span>
|
|
|
+ <span class="n">request_iterator</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">RequestIterableType</span><span class="p">],</span>
|
|
|
+ <span class="n">timeout</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span>
|
|
|
+ <span class="n">credentials</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">grpc</span><span class="o">.</span><span class="n">CallCredentials</span><span class="p">],</span>
|
|
|
+ <span class="n">wait_for_ready</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">],</span> <span class="n">channel</span><span class="p">:</span> <span class="n">cygrpc</span><span class="o">.</span><span class="n">AioChannel</span><span class="p">,</span>
|
|
|
+ <span class="n">method</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">request_serializer</span><span class="p">:</span> <span class="n">SerializingFunction</span><span class="p">,</span>
|
|
|
+ <span class="n">response_deserializer</span><span class="p">:</span> <span class="n">DeserializingFunction</span><span class="p">,</span>
|
|
|
+ <span class="n">loop</span><span class="p">:</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">AbstractEventLoop</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_loop</span> <span class="o">=</span> <span class="n">loop</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_channel</span> <span class="o">=</span> <span class="n">channel</span>
|
|
|
+ <span class="n">request_iterator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_init_stream_request_mixin</span><span class="p">(</span><span class="n">request_iterator</span><span class="p">)</span>
|
|
|
+ <span class="n">interceptors_task</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">create_task</span><span class="p">(</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_invoke</span><span class="p">(</span><span class="n">interceptors</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="n">timeout</span><span class="p">,</span> <span class="n">metadata</span><span class="p">,</span> <span class="n">credentials</span><span class="p">,</span>
|
|
|
+ <span class="n">wait_for_ready</span><span class="p">,</span> <span class="n">request_iterator</span><span class="p">,</span> <span class="n">request_serializer</span><span class="p">,</span>
|
|
|
+ <span class="n">response_deserializer</span><span class="p">))</span>
|
|
|
+ <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">interceptors_task</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="c1"># pylint: disable=too-many-arguments</span>
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">_invoke</span><span class="p">(</span>
|
|
|
+ <span class="bp">self</span><span class="p">,</span> <span class="n">interceptors</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">StreamUnaryClientInterceptor</span><span class="p">],</span>
|
|
|
+ <span class="n">method</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span>
|
|
|
+ <span class="n">metadata</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Metadata</span><span class="p">],</span>
|
|
|
+ <span class="n">credentials</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">grpc</span><span class="o">.</span><span class="n">CallCredentials</span><span class="p">],</span>
|
|
|
+ <span class="n">wait_for_ready</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">],</span>
|
|
|
+ <span class="n">request_iterator</span><span class="p">:</span> <span class="n">RequestIterableType</span><span class="p">,</span>
|
|
|
+ <span class="n">request_serializer</span><span class="p">:</span> <span class="n">SerializingFunction</span><span class="p">,</span>
|
|
|
+ <span class="n">response_deserializer</span><span class="p">:</span> <span class="n">DeserializingFunction</span><span class="p">)</span> <span class="o">-></span> <span class="n">StreamUnaryCall</span><span class="p">:</span>
|
|
|
+ <span class="sd">"""Run the RPC call wrapped in interceptors"""</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">_run_interceptor</span><span class="p">(</span>
|
|
|
+ <span class="n">interceptors</span><span class="p">:</span> <span class="n">Iterator</span><span class="p">[</span><span class="n">UnaryUnaryClientInterceptor</span><span class="p">],</span>
|
|
|
+ <span class="n">client_call_details</span><span class="p">:</span> <span class="n">ClientCallDetails</span><span class="p">,</span>
|
|
|
+ <span class="n">request_iterator</span><span class="p">:</span> <span class="n">RequestIterableType</span>
|
|
|
+ <span class="p">)</span> <span class="o">-></span> <span class="n">_base_call</span><span class="o">.</span><span class="n">StreamUnaryCall</span><span class="p">:</span>
|
|
|
+
|
|
|
+ <span class="n">interceptor</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="n">interceptors</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">if</span> <span class="n">interceptor</span><span class="p">:</span>
|
|
|
+ <span class="n">continuation</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">partial</span><span class="p">(</span><span class="n">_run_interceptor</span><span class="p">,</span> <span class="n">interceptors</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">return</span> <span class="k">await</span> <span class="n">interceptor</span><span class="o">.</span><span class="n">intercept_stream_unary</span><span class="p">(</span>
|
|
|
+ <span class="n">continuation</span><span class="p">,</span> <span class="n">client_call_details</span><span class="p">,</span> <span class="n">request_iterator</span><span class="p">)</span>
|
|
|
+ <span class="k">else</span><span class="p">:</span>
|
|
|
+ <span class="k">return</span> <span class="n">StreamUnaryCall</span><span class="p">(</span>
|
|
|
+ <span class="n">request_iterator</span><span class="p">,</span>
|
|
|
+ <span class="n">_timeout_to_deadline</span><span class="p">(</span><span class="n">client_call_details</span><span class="o">.</span><span class="n">timeout</span><span class="p">),</span>
|
|
|
+ <span class="n">client_call_details</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span>
|
|
|
+ <span class="n">client_call_details</span><span class="o">.</span><span class="n">credentials</span><span class="p">,</span>
|
|
|
+ <span class="n">client_call_details</span><span class="o">.</span><span class="n">wait_for_ready</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_channel</span><span class="p">,</span>
|
|
|
+ <span class="n">client_call_details</span><span class="o">.</span><span class="n">method</span><span class="p">,</span> <span class="n">request_serializer</span><span class="p">,</span>
|
|
|
+ <span class="n">response_deserializer</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_loop</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="n">client_call_details</span> <span class="o">=</span> <span class="n">ClientCallDetails</span><span class="p">(</span><span class="n">method</span><span class="p">,</span> <span class="n">timeout</span><span class="p">,</span> <span class="n">metadata</span><span class="p">,</span>
|
|
|
+ <span class="n">credentials</span><span class="p">,</span> <span class="n">wait_for_ready</span><span class="p">)</span>
|
|
|
+ <span class="k">return</span> <span class="k">await</span> <span class="n">_run_interceptor</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="n">interceptors</span><span class="p">),</span> <span class="n">client_call_details</span><span class="p">,</span>
|
|
|
+ <span class="n">request_iterator</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">def</span> <span class="nf">time_remaining</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]:</span>
|
|
|
+ <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>
|
|
|
+
|
|
|
+
|
|
|
+<span class="k">class</span> <span class="nc">InterceptedStreamStreamCall</span><span class="p">(</span><span class="n">_InterceptedStreamResponseMixin</span><span class="p">,</span>
|
|
|
+ <span class="n">_InterceptedStreamRequestMixin</span><span class="p">,</span>
|
|
|
+ <span class="n">InterceptedCall</span><span class="p">,</span> <span class="n">_base_call</span><span class="o">.</span><span class="n">StreamStreamCall</span><span class="p">):</span>
|
|
|
+ <span class="sd">"""Used for running a `StreamStreamCall` wrapped by interceptors."""</span>
|
|
|
+
|
|
|
+ <span class="n">_loop</span><span class="p">:</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">AbstractEventLoop</span>
|
|
|
+ <span class="n">_channel</span><span class="p">:</span> <span class="n">cygrpc</span><span class="o">.</span><span class="n">AioChannel</span>
|
|
|
+ <span class="n">_last_returned_call_from_interceptors</span> <span class="o">=</span> <span class="n">Optional</span><span class="p">[</span><span class="n">_base_call</span><span class="o">.</span><span class="n">UnaryStreamCall</span><span class="p">]</span>
|
|
|
+
|
|
|
+ <span class="c1"># pylint: disable=too-many-arguments</span>
|
|
|
+ <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">interceptors</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">StreamStreamClientInterceptor</span><span class="p">],</span>
|
|
|
+ <span class="n">request_iterator</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">RequestIterableType</span><span class="p">],</span>
|
|
|
+ <span class="n">timeout</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">Metadata</span><span class="p">,</span>
|
|
|
+ <span class="n">credentials</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">grpc</span><span class="o">.</span><span class="n">CallCredentials</span><span class="p">],</span>
|
|
|
+ <span class="n">wait_for_ready</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">],</span> <span class="n">channel</span><span class="p">:</span> <span class="n">cygrpc</span><span class="o">.</span><span class="n">AioChannel</span><span class="p">,</span>
|
|
|
+ <span class="n">method</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">request_serializer</span><span class="p">:</span> <span class="n">SerializingFunction</span><span class="p">,</span>
|
|
|
+ <span class="n">response_deserializer</span><span class="p">:</span> <span class="n">DeserializingFunction</span><span class="p">,</span>
|
|
|
+ <span class="n">loop</span><span class="p">:</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">AbstractEventLoop</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_loop</span> <span class="o">=</span> <span class="n">loop</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_channel</span> <span class="o">=</span> <span class="n">channel</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_init_stream_response_mixin</span><span class="p">()</span>
|
|
|
+ <span class="n">request_iterator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_init_stream_request_mixin</span><span class="p">(</span><span class="n">request_iterator</span><span class="p">)</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_last_returned_call_from_interceptors</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
+ <span class="n">interceptors_task</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">create_task</span><span class="p">(</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_invoke</span><span class="p">(</span><span class="n">interceptors</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="n">timeout</span><span class="p">,</span> <span class="n">metadata</span><span class="p">,</span> <span class="n">credentials</span><span class="p">,</span>
|
|
|
+ <span class="n">wait_for_ready</span><span class="p">,</span> <span class="n">request_iterator</span><span class="p">,</span> <span class="n">request_serializer</span><span class="p">,</span>
|
|
|
+ <span class="n">response_deserializer</span><span class="p">))</span>
|
|
|
+ <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">interceptors_task</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="c1"># pylint: disable=too-many-arguments</span>
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">_invoke</span><span class="p">(</span>
|
|
|
+ <span class="bp">self</span><span class="p">,</span> <span class="n">interceptors</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">StreamStreamClientInterceptor</span><span class="p">],</span>
|
|
|
+ <span class="n">method</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span>
|
|
|
+ <span class="n">metadata</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Metadata</span><span class="p">],</span>
|
|
|
+ <span class="n">credentials</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">grpc</span><span class="o">.</span><span class="n">CallCredentials</span><span class="p">],</span>
|
|
|
+ <span class="n">wait_for_ready</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">],</span>
|
|
|
+ <span class="n">request_iterator</span><span class="p">:</span> <span class="n">RequestIterableType</span><span class="p">,</span>
|
|
|
+ <span class="n">request_serializer</span><span class="p">:</span> <span class="n">SerializingFunction</span><span class="p">,</span>
|
|
|
+ <span class="n">response_deserializer</span><span class="p">:</span> <span class="n">DeserializingFunction</span><span class="p">)</span> <span class="o">-></span> <span class="n">StreamStreamCall</span><span class="p">:</span>
|
|
|
+ <span class="sd">"""Run the RPC call wrapped in interceptors"""</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">_run_interceptor</span><span class="p">(</span>
|
|
|
+ <span class="n">interceptors</span><span class="p">:</span> <span class="n">Iterator</span><span class="p">[</span><span class="n">StreamStreamClientInterceptor</span><span class="p">],</span>
|
|
|
+ <span class="n">client_call_details</span><span class="p">:</span> <span class="n">ClientCallDetails</span><span class="p">,</span>
|
|
|
+ <span class="n">request_iterator</span><span class="p">:</span> <span class="n">RequestIterableType</span>
|
|
|
+ <span class="p">)</span> <span class="o">-></span> <span class="n">_base_call</span><span class="o">.</span><span class="n">StreamStreamCall</span><span class="p">:</span>
|
|
|
+
|
|
|
+ <span class="n">interceptor</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="n">interceptors</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">if</span> <span class="n">interceptor</span><span class="p">:</span>
|
|
|
+ <span class="n">continuation</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">partial</span><span class="p">(</span><span class="n">_run_interceptor</span><span class="p">,</span> <span class="n">interceptors</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="n">call_or_response_iterator</span> <span class="o">=</span> <span class="k">await</span> <span class="n">interceptor</span><span class="o">.</span><span class="n">intercept_stream_stream</span><span class="p">(</span>
|
|
|
+ <span class="n">continuation</span><span class="p">,</span> <span class="n">client_call_details</span><span class="p">,</span> <span class="n">request_iterator</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">call_or_response_iterator</span><span class="p">,</span>
|
|
|
+ <span class="n">_base_call</span><span class="o">.</span><span class="n">StreamStreamCall</span><span class="p">):</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_last_returned_call_from_interceptors</span> <span class="o">=</span> <span class="n">call_or_response_iterator</span>
|
|
|
+ <span class="k">else</span><span class="p">:</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_last_returned_call_from_interceptors</span> <span class="o">=</span> <span class="n">StreamStreamCallResponseIterator</span><span class="p">(</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_last_returned_call_from_interceptors</span><span class="p">,</span>
|
|
|
+ <span class="n">call_or_response_iterator</span><span class="p">)</span>
|
|
|
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_last_returned_call_from_interceptors</span>
|
|
|
+ <span class="k">else</span><span class="p">:</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_last_returned_call_from_interceptors</span> <span class="o">=</span> <span class="n">StreamStreamCall</span><span class="p">(</span>
|
|
|
+ <span class="n">request_iterator</span><span class="p">,</span>
|
|
|
+ <span class="n">_timeout_to_deadline</span><span class="p">(</span><span class="n">client_call_details</span><span class="o">.</span><span class="n">timeout</span><span class="p">),</span>
|
|
|
+ <span class="n">client_call_details</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span>
|
|
|
+ <span class="n">client_call_details</span><span class="o">.</span><span class="n">credentials</span><span class="p">,</span>
|
|
|
+ <span class="n">client_call_details</span><span class="o">.</span><span class="n">wait_for_ready</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_channel</span><span class="p">,</span>
|
|
|
+ <span class="n">client_call_details</span><span class="o">.</span><span class="n">method</span><span class="p">,</span> <span class="n">request_serializer</span><span class="p">,</span>
|
|
|
+ <span class="n">response_deserializer</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_loop</span><span class="p">)</span>
|
|
|
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_last_returned_call_from_interceptors</span>
|
|
|
+
|
|
|
+ <span class="n">client_call_details</span> <span class="o">=</span> <span class="n">ClientCallDetails</span><span class="p">(</span><span class="n">method</span><span class="p">,</span> <span class="n">timeout</span><span class="p">,</span> <span class="n">metadata</span><span class="p">,</span>
|
|
|
+ <span class="n">credentials</span><span class="p">,</span> <span class="n">wait_for_ready</span><span class="p">)</span>
|
|
|
+ <span class="k">return</span> <span class="k">await</span> <span class="n">_run_interceptor</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="n">interceptors</span><span class="p">),</span> <span class="n">client_call_details</span><span class="p">,</span>
|
|
|
+ <span class="n">request_iterator</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">def</span> <span class="nf">time_remaining</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]:</span>
|
|
|
+ <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>
|
|
|
|
|
|
|
|
|
<span class="k">class</span> <span class="nc">UnaryUnaryCallResponse</span><span class="p">(</span><span class="n">_base_call</span><span class="o">.</span><span class="n">UnaryUnaryCall</span><span class="p">):</span>
|
|
@@ -446,10 +967,10 @@
|
|
|
<span class="k">def</span> <span class="nf">time_remaining</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]:</span>
|
|
|
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>
|
|
|
|
|
|
- <span class="k">async</span> <span class="k">def</span> <span class="nf">initial_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">MetadataType</span><span class="p">]:</span>
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">initial_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">Metadata</span><span class="p">]:</span>
|
|
|
<span class="k">return</span> <span class="kc">None</span>
|
|
|
|
|
|
- <span class="k">async</span> <span class="k">def</span> <span class="nf">trailing_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">MetadataType</span><span class="p">]:</span>
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">trailing_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">Metadata</span><span class="p">]:</span>
|
|
|
<span class="k">return</span> <span class="kc">None</span>
|
|
|
|
|
|
<span class="k">async</span> <span class="k">def</span> <span class="nf">code</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">grpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="p">:</span>
|
|
@@ -470,6 +991,90 @@
|
|
|
|
|
|
<span class="k">async</span> <span class="k">def</span> <span class="nf">wait_for_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
<span class="k">pass</span>
|
|
|
+
|
|
|
+
|
|
|
+<span class="k">class</span> <span class="nc">_StreamCallResponseIterator</span><span class="p">:</span>
|
|
|
+
|
|
|
+ <span class="n">_call</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">_base_call</span><span class="o">.</span><span class="n">UnaryStreamCall</span><span class="p">,</span> <span class="n">_base_call</span><span class="o">.</span><span class="n">StreamStreamCall</span><span class="p">]</span>
|
|
|
+ <span class="n">_response_iterator</span><span class="p">:</span> <span class="n">AsyncIterable</span><span class="p">[</span><span class="n">ResponseType</span><span class="p">]</span>
|
|
|
+
|
|
|
+ <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">call</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">_base_call</span><span class="o">.</span><span class="n">UnaryStreamCall</span><span class="p">,</span> <span class="n">_base_call</span><span class="o">.</span>
|
|
|
+ <span class="n">StreamStreamCall</span><span class="p">],</span>
|
|
|
+ <span class="n">response_iterator</span><span class="p">:</span> <span class="n">AsyncIterable</span><span class="p">[</span><span class="n">ResponseType</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_response_iterator</span> <span class="o">=</span> <span class="n">response_iterator</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_call</span> <span class="o">=</span> <span class="n">call</span>
|
|
|
+
|
|
|
+ <span class="k">def</span> <span class="nf">cancel</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
|
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_call</span><span class="o">.</span><span class="n">cancel</span><span class="p">()</span>
|
|
|
+
|
|
|
+ <span class="k">def</span> <span class="nf">cancelled</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
|
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_call</span><span class="o">.</span><span class="n">cancelled</span><span class="p">()</span>
|
|
|
+
|
|
|
+ <span class="k">def</span> <span class="nf">done</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
|
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_call</span><span class="o">.</span><span class="n">done</span><span class="p">()</span>
|
|
|
+
|
|
|
+ <span class="k">def</span> <span class="nf">add_done_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="bp">self</span><span class="o">.</span><span class="n">_call</span><span class="o">.</span><span class="n">add_done_callback</span><span class="p">(</span><span class="n">callback</span><span class="p">)</span>
|
|
|
+
|
|
|
+ <span class="k">def</span> <span class="nf">time_remaining</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]:</span>
|
|
|
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_call</span><span class="o">.</span><span class="n">time_remaining</span><span class="p">()</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">initial_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">Metadata</span><span class="p">]:</span>
|
|
|
+ <span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_call</span><span class="o">.</span><span class="n">initial_metadata</span><span class="p">()</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">trailing_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">Metadata</span><span class="p">]:</span>
|
|
|
+ <span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_call</span><span class="o">.</span><span class="n">trailing_metadata</span><span class="p">()</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">code</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">grpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="p">:</span>
|
|
|
+ <span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_call</span><span class="o">.</span><span class="n">code</span><span class="p">()</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">details</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
|
+ <span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_call</span><span class="o">.</span><span class="n">details</span><span class="p">()</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">debug_error_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
|
|
|
+ <span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_call</span><span class="o">.</span><span class="n">debug_error_string</span><span class="p">()</span>
|
|
|
+
|
|
|
+ <span class="k">def</span> <span class="fm">__aiter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
|
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_response_iterator</span><span class="o">.</span><span class="fm">__aiter__</span><span class="p">()</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">wait_for_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_call</span><span class="o">.</span><span class="n">wait_for_connection</span><span class="p">()</span>
|
|
|
+
|
|
|
+
|
|
|
+<span class="k">class</span> <span class="nc">UnaryStreamCallResponseIterator</span><span class="p">(</span><span class="n">_StreamCallResponseIterator</span><span class="p">,</span>
|
|
|
+ <span class="n">_base_call</span><span class="o">.</span><span class="n">UnaryStreamCall</span><span class="p">):</span>
|
|
|
+ <span class="sd">"""UnaryStreamCall class wich uses an alternative response iterator."""</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">ResponseType</span><span class="p">:</span>
|
|
|
+ <span class="c1"># Behind the scenes everyting goes through the</span>
|
|
|
+ <span class="c1"># async iterator. So this path should not be reached.</span>
|
|
|
+ <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>
|
|
|
+
|
|
|
+
|
|
|
+<span class="k">class</span> <span class="nc">StreamStreamCallResponseIterator</span><span class="p">(</span><span class="n">_StreamCallResponseIterator</span><span class="p">,</span>
|
|
|
+ <span class="n">_base_call</span><span class="o">.</span><span class="n">StreamStreamCall</span><span class="p">):</span>
|
|
|
+ <span class="sd">"""StreamStreamCall class wich uses an alternative response iterator."""</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">ResponseType</span><span class="p">:</span>
|
|
|
+ <span class="c1"># Behind the scenes everyting goes through the</span>
|
|
|
+ <span class="c1"># async iterator. So this path should not be reached.</span>
|
|
|
+ <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">:</span> <span class="n">RequestType</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="c1"># Behind the scenes everyting goes through the</span>
|
|
|
+ <span class="c1"># async iterator provided by the InterceptedStreamStreamCall.</span>
|
|
|
+ <span class="c1"># So this path should not be reached.</span>
|
|
|
+ <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>
|
|
|
+
|
|
|
+ <span class="k">async</span> <span class="k">def</span> <span class="nf">done_writing</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
|
+ <span class="c1"># Behind the scenes everyting goes through the</span>
|
|
|
+ <span class="c1"># async iterator provided by the InterceptedStreamStreamCall.</span>
|
|
|
+ <span class="c1"># So this path should not be reached.</span>
|
|
|
+ <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>
|
|
|
+
|
|
|
+ <span class="nd">@property</span>
|
|
|
+ <span class="k">def</span> <span class="nf">_done_writing_flag</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
|
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_call</span><span class="o">.</span><span class="n">_done_writing_flag</span>
|
|
|
</pre></div>
|
|
|
|
|
|
</div>
|
|
@@ -479,7 +1084,7 @@
|
|
|
<div class="clearer"></div>
|
|
|
</div>
|
|
|
<div class="footer">
|
|
|
- ©2018, The gRPC Authors.
|
|
|
+ ©2020, The gRPC Authors.
|
|
|
|
|
|
</div>
|
|
|
|