grpc/python/_modules/grpc/aio/_base_call.html

368 lines
27 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>grpc.aio._base_call &#8212; gRPC Python 1.32.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>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/language_data.js"></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head><body>
<div class="document">
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="../../../index.html">gRPC Python</a></h1>
<p class="blurb">1.32.0</p>
<h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../grpc.html">gRPC</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../grpc_asyncio.html">gRPC AsyncIO API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../grpc_channelz.html">gRPC Channelz</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../grpc_health_checking.html">gRPC Health Checking</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../grpc_reflection.html">gRPC Reflection</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../grpc_status.html">gRPC Status</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../grpc_testing.html">gRPC Testing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../glossary.html">Glossary</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="../../../index.html">Documentation overview</a><ul>
<li><a href="../../index.html">Module code</a><ul>
<li><a href="../../grpc.html">grpc</a><ul>
</ul></li>
</ul></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
</div>
</div>
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for grpc.aio._base_call</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright 2019 The gRPC Authors</span>
<span class="c1">#</span>
<span class="c1"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
<span class="c1"># you may not use this file except in compliance with the License.</span>
<span class="c1"># You may obtain a copy of the License at</span>
<span class="c1">#</span>
<span class="c1"># http://www.apache.org/licenses/LICENSE-2.0</span>
<span class="c1">#</span>
<span class="c1"># Unless required by applicable law or agreed to in writing, software</span>
<span class="c1"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
<span class="c1"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
<span class="c1"># See the License for the specific language governing permissions and</span>
<span class="c1"># limitations under the License.</span>
<span class="sd">&quot;&quot;&quot;Abstract base classes for client-side Call objects.</span>
<span class="sd">Call objects represents the RPC itself, and offer methods to access / modify</span>
<span class="sd">its information. They also offer methods to manipulate the life-cycle of the</span>
<span class="sd">RPC, e.g. cancellation.</span>
<span class="sd">&quot;&quot;&quot;</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">AsyncIterable</span><span class="p">,</span> <span class="n">Awaitable</span><span class="p">,</span> <span class="n">Generic</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Union</span>
<span class="kn">import</span> <span class="nn">grpc</span>
<span class="kn">from</span> <span class="nn">._typing</span> <span class="kn">import</span> <span class="p">(</span><span class="n">DoneCallbackType</span><span class="p">,</span> <span class="n">EOFType</span><span class="p">,</span> <span class="n">RequestType</span><span class="p">,</span> <span class="n">ResponseType</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">__all__</span> <span class="o">=</span> <span class="s1">&#39;RpcContext&#39;</span><span class="p">,</span> <span class="s1">&#39;Call&#39;</span><span class="p">,</span> <span class="s1">&#39;UnaryUnaryCall&#39;</span><span class="p">,</span> <span class="s1">&#39;UnaryStreamCall&#39;</span>
<div class="viewcode-block" id="RpcContext"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.RpcContext">[docs]</a><span class="k">class</span> <span class="nc">RpcContext</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">&quot;&quot;&quot;Provides RPC-related information and action.&quot;&quot;&quot;</span>
<div class="viewcode-block" id="RpcContext.cancelled"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.RpcContext.cancelled">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Return True if the RPC is cancelled.</span>
<span class="sd"> The RPC is cancelled when the cancellation was requested with cancel().</span>
<span class="sd"> Returns:</span>
<span class="sd"> A bool indicates whether the RPC is cancelled or not.</span>
<span class="sd"> &quot;&quot;&quot;</span></div>
<div class="viewcode-block" id="RpcContext.done"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.RpcContext.done">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Return True if the RPC is done.</span>
<span class="sd"> An RPC is done if the RPC is completed, cancelled or aborted.</span>
<span class="sd"> Returns:</span>
<span class="sd"> A bool indicates if the RPC is done.</span>
<span class="sd"> &quot;&quot;&quot;</span></div>
<div class="viewcode-block" id="RpcContext.time_remaining"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.RpcContext.time_remaining">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]:</span>
<span class="sd">&quot;&quot;&quot;Describes the length of allowed time remaining for the RPC.</span>
<span class="sd"> Returns:</span>
<span class="sd"> A nonnegative float indicating the length of allowed time in seconds</span>
<span class="sd"> remaining for the RPC to complete before it is considered to have</span>
<span class="sd"> timed out, or None if no deadline was specified for the RPC.</span>
<span class="sd"> &quot;&quot;&quot;</span></div>
<div class="viewcode-block" id="RpcContext.cancel"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.RpcContext.cancel">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Cancels the RPC.</span>
<span class="sd"> Idempotent and has no effect if the RPC has already terminated.</span>
<span class="sd"> Returns:</span>
<span class="sd"> A bool indicates if the cancellation is performed or not.</span>
<span class="sd"> &quot;&quot;&quot;</span></div>
<div class="viewcode-block" id="RpcContext.add_done_callback"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.RpcContext.add_done_callback">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Registers a callback to be called on RPC termination.</span>
<span class="sd"> Args:</span>
<span class="sd"> callback: A callable object will be called with the call object as</span>
<span class="sd"> its only argument.</span>
<span class="sd"> &quot;&quot;&quot;</span></div></div>
<div class="viewcode-block" id="Call"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.Call">[docs]</a><span class="k">class</span> <span class="nc">Call</span><span class="p">(</span><span class="n">RpcContext</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">&quot;&quot;&quot;The abstract base class of an RPC on the client-side.&quot;&quot;&quot;</span>
<div class="viewcode-block" id="Call.initial_metadata"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.Call.initial_metadata">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="n">Metadata</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Accesses the initial metadata sent by the server.</span>
<span class="sd"> Returns:</span>
<span class="sd"> The initial :term:`metadata`.</span>
<span class="sd"> &quot;&quot;&quot;</span></div>
<div class="viewcode-block" id="Call.trailing_metadata"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.Call.trailing_metadata">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="n">Metadata</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Accesses the trailing metadata sent by the server.</span>
<span class="sd"> Returns:</span>
<span class="sd"> The trailing :term:`metadata`.</span>
<span class="sd"> &quot;&quot;&quot;</span></div>
<div class="viewcode-block" id="Call.code"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.Call.code">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="n">grpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Accesses the status code sent by the server.</span>
<span class="sd"> Returns:</span>
<span class="sd"> The StatusCode value for the RPC.</span>
<span class="sd"> &quot;&quot;&quot;</span></div>
<div class="viewcode-block" id="Call.details"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.Call.details">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Accesses the details sent by the server.</span>
<span class="sd"> Returns:</span>
<span class="sd"> The details string of the RPC.</span>
<span class="sd"> &quot;&quot;&quot;</span></div>
<div class="viewcode-block" id="Call.wait_for_connection"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.Call.wait_for_connection">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Waits until connected to peer and raises aio.AioRpcError if failed.</span>
<span class="sd"> This is an EXPERIMENTAL method.</span>
<span class="sd"> This method ensures the RPC has been successfully connected. Otherwise,</span>
<span class="sd"> an AioRpcError will be raised to explain the reason of the connection</span>
<span class="sd"> failure.</span>
<span class="sd"> This method is recommended for building retry mechanisms.</span>
<span class="sd"> &quot;&quot;&quot;</span></div></div>
<div class="viewcode-block" id="UnaryUnaryCall"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.UnaryUnaryCall">[docs]</a><span class="k">class</span> <span class="nc">UnaryUnaryCall</span><span class="p">(</span><span class="n">Generic</span><span class="p">[</span><span class="n">RequestType</span><span class="p">,</span> <span class="n">ResponseType</span><span class="p">],</span>
<span class="n">Call</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">&quot;&quot;&quot;The abstract base class of an unary-unary RPC on the client-side.&quot;&quot;&quot;</span>
<div class="viewcode-block" id="UnaryUnaryCall.__await__"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.UnaryUnaryCall.__await__">[docs]</a> <span class="nd">@abstractmethod</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="o">-&gt;</span> <span class="n">Awaitable</span><span class="p">[</span><span class="n">ResponseType</span><span class="p">]:</span>
<span class="sd">&quot;&quot;&quot;Await the response message to be ready.</span>
<span class="sd"> Returns:</span>
<span class="sd"> The response message of the RPC.</span>
<span class="sd"> &quot;&quot;&quot;</span></div></div>
<div class="viewcode-block" id="UnaryStreamCall"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.UnaryStreamCall">[docs]</a><span class="k">class</span> <span class="nc">UnaryStreamCall</span><span class="p">(</span><span class="n">Generic</span><span class="p">[</span><span class="n">RequestType</span><span class="p">,</span> <span class="n">ResponseType</span><span class="p">],</span>
<span class="n">Call</span><span class="p">,</span>
<span class="n">metaclass</span><span class="o">=</span><span class="n">ABCMeta</span><span class="p">):</span>
<div class="viewcode-block" id="UnaryStreamCall.__aiter__"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.UnaryStreamCall.__aiter__">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="n">AsyncIterable</span><span class="p">[</span><span class="n">ResponseType</span><span class="p">]:</span>
<span class="sd">&quot;&quot;&quot;Returns the async iterable representation that yields messages.</span>
<span class="sd"> Under the hood, it is calling the &quot;read&quot; method.</span>
<span class="sd"> Returns:</span>
<span class="sd"> An async iterable object that yields messages.</span>
<span class="sd"> &quot;&quot;&quot;</span></div>
<div class="viewcode-block" id="UnaryStreamCall.read"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.UnaryStreamCall.read">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="n">Union</span><span class="p">[</span><span class="n">EOFType</span><span class="p">,</span> <span class="n">ResponseType</span><span class="p">]:</span>
<span class="sd">&quot;&quot;&quot;Reads one message from the stream.</span>
<span class="sd"> Read operations must be serialized when called from multiple</span>
<span class="sd"> coroutines.</span>
<span class="sd"> Returns:</span>
<span class="sd"> A response message, or an `grpc.aio.EOF` to indicate the end of the</span>
<span class="sd"> stream.</span>
<span class="sd"> &quot;&quot;&quot;</span></div></div>
<div class="viewcode-block" id="StreamUnaryCall"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.StreamUnaryCall">[docs]</a><span class="k">class</span> <span class="nc">StreamUnaryCall</span><span class="p">(</span><span class="n">Generic</span><span class="p">[</span><span class="n">RequestType</span><span class="p">,</span> <span class="n">ResponseType</span><span class="p">],</span>
<span class="n">Call</span><span class="p">,</span>
<span class="n">metaclass</span><span class="o">=</span><span class="n">ABCMeta</span><span class="p">):</span>
<div class="viewcode-block" id="StreamUnaryCall.write"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.StreamUnaryCall.write">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Writes one message to the stream.</span>
<span class="sd"> Raises:</span>
<span class="sd"> An RpcError exception if the write failed.</span>
<span class="sd"> &quot;&quot;&quot;</span></div>
<div class="viewcode-block" id="StreamUnaryCall.done_writing"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.StreamUnaryCall.done_writing">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Notifies server that the client is done sending messages.</span>
<span class="sd"> After done_writing is called, any additional invocation to the write</span>
<span class="sd"> function will fail. This function is idempotent.</span>
<span class="sd"> &quot;&quot;&quot;</span></div>
<div class="viewcode-block" id="StreamUnaryCall.__await__"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.StreamUnaryCall.__await__">[docs]</a> <span class="nd">@abstractmethod</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="o">-&gt;</span> <span class="n">Awaitable</span><span class="p">[</span><span class="n">ResponseType</span><span class="p">]:</span>
<span class="sd">&quot;&quot;&quot;Await the response message to be ready.</span>
<span class="sd"> Returns:</span>
<span class="sd"> The response message of the stream.</span>
<span class="sd"> &quot;&quot;&quot;</span></div></div>
<div class="viewcode-block" id="StreamStreamCall"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.StreamStreamCall">[docs]</a><span class="k">class</span> <span class="nc">StreamStreamCall</span><span class="p">(</span><span class="n">Generic</span><span class="p">[</span><span class="n">RequestType</span><span class="p">,</span> <span class="n">ResponseType</span><span class="p">],</span>
<span class="n">Call</span><span class="p">,</span>
<span class="n">metaclass</span><span class="o">=</span><span class="n">ABCMeta</span><span class="p">):</span>
<div class="viewcode-block" id="StreamStreamCall.__aiter__"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.StreamStreamCall.__aiter__">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="n">AsyncIterable</span><span class="p">[</span><span class="n">ResponseType</span><span class="p">]:</span>
<span class="sd">&quot;&quot;&quot;Returns the async iterable representation that yields messages.</span>
<span class="sd"> Under the hood, it is calling the &quot;read&quot; method.</span>
<span class="sd"> Returns:</span>
<span class="sd"> An async iterable object that yields messages.</span>
<span class="sd"> &quot;&quot;&quot;</span></div>
<div class="viewcode-block" id="StreamStreamCall.read"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.StreamStreamCall.read">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="n">Union</span><span class="p">[</span><span class="n">EOFType</span><span class="p">,</span> <span class="n">ResponseType</span><span class="p">]:</span>
<span class="sd">&quot;&quot;&quot;Reads one message from the stream.</span>
<span class="sd"> Read operations must be serialized when called from multiple</span>
<span class="sd"> coroutines.</span>
<span class="sd"> Returns:</span>
<span class="sd"> A response message, or an `grpc.aio.EOF` to indicate the end of the</span>
<span class="sd"> stream.</span>
<span class="sd"> &quot;&quot;&quot;</span></div>
<div class="viewcode-block" id="StreamStreamCall.write"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.StreamStreamCall.write">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Writes one message to the stream.</span>
<span class="sd"> Raises:</span>
<span class="sd"> An RpcError exception if the write failed.</span>
<span class="sd"> &quot;&quot;&quot;</span></div>
<div class="viewcode-block" id="StreamStreamCall.done_writing"><a class="viewcode-back" href="../../../grpc_asyncio.html#grpc.experimental.aio.StreamStreamCall.done_writing">[docs]</a> <span class="nd">@abstractmethod</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Notifies server that the client is done sending messages.</span>
<span class="sd"> After done_writing is called, any additional invocation to the write</span>
<span class="sd"> function will fail. This function is idempotent.</span>
<span class="sd"> &quot;&quot;&quot;</span></div></div>
</pre></div>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2020, The gRPC Authors.
</div>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-60127042-1']);
_gaq.push(['_setDomainName', 'none']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</body>
</html>