grpc.html 128 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565
  1. <!DOCTYPE html>
  2. <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
  3. <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
  4. <head>
  5. <meta charset="utf-8">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>grpc &mdash; grpcio 1.2.0 documentation</title>
  8. <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
  9. <link rel="index" title="Index"
  10. href="../genindex.html"/>
  11. <link rel="search" title="Search" href="../search.html"/>
  12. <link rel="top" title="grpcio 1.2.0 documentation" href="../index.html"/>
  13. <link rel="up" title="Module code" href="index.html"/>
  14. <script src="../_static/js/modernizr.min.js"></script>
  15. </head>
  16. <body class="wy-body-for-nav" role="document">
  17. <div class="wy-grid-for-nav">
  18. <nav data-toggle="wy-nav-shift" class="wy-nav-side">
  19. <div class="wy-side-scroll">
  20. <div class="wy-side-nav-search">
  21. <a href="../index.html" class="icon icon-home"> grpcio
  22. </a>
  23. <div class="version">
  24. 1.2.0
  25. </div>
  26. <div role="search">
  27. <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
  28. <input type="text" name="q" placeholder="Search docs" />
  29. <input type="hidden" name="check_keywords" value="yes" />
  30. <input type="hidden" name="area" value="default" />
  31. </form>
  32. </div>
  33. </div>
  34. <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
  35. <p class="caption"><span class="caption-text">Contents:</span></p>
  36. <ul>
  37. <li class="toctree-l1"><a class="reference internal" href="../grpc.html">grpc package</a></li>
  38. <li class="toctree-l1"><a class="reference internal" href="../grpc.html#glossary">Glossary</a></li>
  39. </ul>
  40. </div>
  41. </div>
  42. </nav>
  43. <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
  44. <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
  45. <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
  46. <a href="../index.html">grpcio</a>
  47. </nav>
  48. <div class="wy-nav-content">
  49. <div class="rst-content">
  50. <div role="navigation" aria-label="breadcrumbs navigation">
  51. <ul class="wy-breadcrumbs">
  52. <li><a href="../index.html">Docs</a> &raquo;</li>
  53. <li><a href="index.html">Module code</a> &raquo;</li>
  54. <li>grpc</li>
  55. <li class="wy-breadcrumbs-aside">
  56. </li>
  57. </ul>
  58. <hr/>
  59. </div>
  60. <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
  61. <div itemprop="articleBody">
  62. <h1>Source code for grpc</h1><div class="highlight"><pre>
  63. <span></span><span class="c1"># Copyright 2015-2016, Google Inc.</span>
  64. <span class="c1"># All rights reserved.</span>
  65. <span class="c1">#</span>
  66. <span class="c1"># Redistribution and use in source and binary forms, with or without</span>
  67. <span class="c1"># modification, are permitted provided that the following conditions are</span>
  68. <span class="c1"># met:</span>
  69. <span class="c1">#</span>
  70. <span class="c1"># * Redistributions of source code must retain the above copyright</span>
  71. <span class="c1"># notice, this list of conditions and the following disclaimer.</span>
  72. <span class="c1"># * Redistributions in binary form must reproduce the above</span>
  73. <span class="c1"># copyright notice, this list of conditions and the following disclaimer</span>
  74. <span class="c1"># in the documentation and/or other materials provided with the</span>
  75. <span class="c1"># distribution.</span>
  76. <span class="c1"># * Neither the name of Google Inc. nor the names of its</span>
  77. <span class="c1"># contributors may be used to endorse or promote products derived from</span>
  78. <span class="c1"># this software without specific prior written permission.</span>
  79. <span class="c1">#</span>
  80. <span class="c1"># THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS</span>
  81. <span class="c1"># &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT</span>
  82. <span class="c1"># LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR</span>
  83. <span class="c1"># A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT</span>
  84. <span class="c1"># OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
  85. <span class="c1"># SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</span>
  86. <span class="c1"># LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,</span>
  87. <span class="c1"># DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY</span>
  88. <span class="c1"># THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span>
  89. <span class="c1"># (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE</span>
  90. <span class="c1"># OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
  91. <span class="sd">&quot;&quot;&quot;gRPC&#39;s Python API.&quot;&quot;&quot;</span>
  92. <span class="kn">import</span> <span class="nn">abc</span>
  93. <span class="kn">import</span> <span class="nn">enum</span>
  94. <span class="kn">import</span> <span class="nn">sys</span>
  95. <span class="kn">import</span> <span class="nn">six</span>
  96. <span class="kn">from</span> <span class="nn">grpc._cython</span> <span class="k">import</span> <span class="n">cygrpc</span> <span class="k">as</span> <span class="n">_cygrpc</span>
  97. <span class="c1">############################## Future Interface ###############################</span>
  98. <div class="viewcode-block" id="FutureTimeoutError"><a class="viewcode-back" href="../grpc.html#grpc.FutureTimeoutError">[docs]</a><span class="k">class</span> <span class="nc">FutureTimeoutError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
  99. <span class="sd">&quot;&quot;&quot;Indicates that a method call on a Future timed out.&quot;&quot;&quot;</span></div>
  100. <div class="viewcode-block" id="FutureCancelledError"><a class="viewcode-back" href="../grpc.html#grpc.FutureCancelledError">[docs]</a><span class="k">class</span> <span class="nc">FutureCancelledError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
  101. <span class="sd">&quot;&quot;&quot;Indicates that the computation underlying a Future was cancelled.&quot;&quot;&quot;</span></div>
  102. <div class="viewcode-block" id="Future"><a class="viewcode-back" href="../grpc.html#grpc.Future">[docs]</a><span class="k">class</span> <span class="nc">Future</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>
  103. <span class="sd">&quot;&quot;&quot;A representation of a computation in another control flow.</span>
  104. <span class="sd"> Computations represented by a Future may be yet to be begun, may be ongoing,</span>
  105. <span class="sd"> or may have already completed.</span>
  106. <span class="sd"> &quot;&quot;&quot;</span>
  107. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  108. <div class="viewcode-block" id="Future.cancel"><a class="viewcode-back" href="../grpc.html#grpc.Future.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>
  109. <span class="sd">&quot;&quot;&quot;Attempts to cancel the computation.</span>
  110. <span class="sd"> This method does not block.</span>
  111. <span class="sd"> Returns:</span>
  112. <span class="sd"> True if the computation has not yet begun, will not be allowed to take</span>
  113. <span class="sd"> place, and determination of both was possible without blocking. False</span>
  114. <span class="sd"> under all other circumstances including but not limited to the</span>
  115. <span class="sd"> computation&#39;s already having begun, the computation&#39;s already having</span>
  116. <span class="sd"> finished, and the computation&#39;s having been scheduled for execution on a</span>
  117. <span class="sd"> remote system for which a determination of whether or not it commenced</span>
  118. <span class="sd"> before being cancelled cannot be made without blocking.</span>
  119. <span class="sd"> &quot;&quot;&quot;</span>
  120. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  121. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  122. <div class="viewcode-block" id="Future.cancelled"><a class="viewcode-back" href="../grpc.html#grpc.Future.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>
  123. <span class="sd">&quot;&quot;&quot;Describes whether the computation was cancelled.</span>
  124. <span class="sd"> This method does not block.</span>
  125. <span class="sd"> Returns:</span>
  126. <span class="sd"> True if the computation was cancelled any time before its result became</span>
  127. <span class="sd"> immediately available. False under all other circumstances including but</span>
  128. <span class="sd"> not limited to this object&#39;s cancel method not having been called and</span>
  129. <span class="sd"> the computation&#39;s result having become immediately available.</span>
  130. <span class="sd"> &quot;&quot;&quot;</span>
  131. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  132. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  133. <div class="viewcode-block" id="Future.running"><a class="viewcode-back" href="../grpc.html#grpc.Future.running">[docs]</a> <span class="k">def</span> <span class="nf">running</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  134. <span class="sd">&quot;&quot;&quot;Describes whether the computation is taking place.</span>
  135. <span class="sd"> This method does not block.</span>
  136. <span class="sd"> Returns:</span>
  137. <span class="sd"> True if the computation is scheduled to take place in the future or is</span>
  138. <span class="sd"> taking place now, or False if the computation took place in the past or</span>
  139. <span class="sd"> was cancelled.</span>
  140. <span class="sd"> &quot;&quot;&quot;</span>
  141. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  142. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  143. <div class="viewcode-block" id="Future.done"><a class="viewcode-back" href="../grpc.html#grpc.Future.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>
  144. <span class="sd">&quot;&quot;&quot;Describes whether the computation has taken place.</span>
  145. <span class="sd"> This method does not block.</span>
  146. <span class="sd"> Returns:</span>
  147. <span class="sd"> True if the computation is known to have either completed or have been</span>
  148. <span class="sd"> unscheduled or interrupted. False if the computation may possibly be</span>
  149. <span class="sd"> executing or scheduled to execute later.</span>
  150. <span class="sd"> &quot;&quot;&quot;</span>
  151. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  152. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  153. <div class="viewcode-block" id="Future.result"><a class="viewcode-back" href="../grpc.html#grpc.Future.result">[docs]</a> <span class="k">def</span> <span class="nf">result</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  154. <span class="sd">&quot;&quot;&quot;Accesses the outcome of the computation or raises its exception.</span>
  155. <span class="sd"> This method may return immediately or may block.</span>
  156. <span class="sd"> Args:</span>
  157. <span class="sd"> timeout: The length of time in seconds to wait for the computation to</span>
  158. <span class="sd"> finish or be cancelled, or None if this method should block until the</span>
  159. <span class="sd"> computation has finished or is cancelled no matter how long that takes.</span>
  160. <span class="sd"> Returns:</span>
  161. <span class="sd"> The return value of the computation.</span>
  162. <span class="sd"> Raises:</span>
  163. <span class="sd"> FutureTimeoutError: If a timeout value is passed and the computation does</span>
  164. <span class="sd"> not terminate within the allotted time.</span>
  165. <span class="sd"> FutureCancelledError: If the computation was cancelled.</span>
  166. <span class="sd"> Exception: If the computation raised an exception, this call will raise</span>
  167. <span class="sd"> the same exception.</span>
  168. <span class="sd"> &quot;&quot;&quot;</span>
  169. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  170. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  171. <div class="viewcode-block" id="Future.exception"><a class="viewcode-back" href="../grpc.html#grpc.Future.exception">[docs]</a> <span class="k">def</span> <span class="nf">exception</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  172. <span class="sd">&quot;&quot;&quot;Return the exception raised by the computation.</span>
  173. <span class="sd"> This method may return immediately or may block.</span>
  174. <span class="sd"> Args:</span>
  175. <span class="sd"> timeout: The length of time in seconds to wait for the computation to</span>
  176. <span class="sd"> terminate or be cancelled, or None if this method should block until</span>
  177. <span class="sd"> the computation is terminated or is cancelled no matter how long that</span>
  178. <span class="sd"> takes.</span>
  179. <span class="sd"> Returns:</span>
  180. <span class="sd"> The exception raised by the computation, or None if the computation did</span>
  181. <span class="sd"> not raise an exception.</span>
  182. <span class="sd"> Raises:</span>
  183. <span class="sd"> FutureTimeoutError: If a timeout value is passed and the computation does</span>
  184. <span class="sd"> not terminate within the allotted time.</span>
  185. <span class="sd"> FutureCancelledError: If the computation was cancelled.</span>
  186. <span class="sd"> &quot;&quot;&quot;</span>
  187. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  188. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  189. <div class="viewcode-block" id="Future.traceback"><a class="viewcode-back" href="../grpc.html#grpc.Future.traceback">[docs]</a> <span class="k">def</span> <span class="nf">traceback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  190. <span class="sd">&quot;&quot;&quot;Access the traceback of the exception raised by the computation.</span>
  191. <span class="sd"> This method may return immediately or may block.</span>
  192. <span class="sd"> Args:</span>
  193. <span class="sd"> timeout: The length of time in seconds to wait for the computation to</span>
  194. <span class="sd"> terminate or be cancelled, or None if this method should block until</span>
  195. <span class="sd"> the computation is terminated or is cancelled no matter how long that</span>
  196. <span class="sd"> takes.</span>
  197. <span class="sd"> Returns:</span>
  198. <span class="sd"> The traceback of the exception raised by the computation, or None if the</span>
  199. <span class="sd"> computation did not raise an exception.</span>
  200. <span class="sd"> Raises:</span>
  201. <span class="sd"> FutureTimeoutError: If a timeout value is passed and the computation does</span>
  202. <span class="sd"> not terminate within the allotted time.</span>
  203. <span class="sd"> FutureCancelledError: If the computation was cancelled.</span>
  204. <span class="sd"> &quot;&quot;&quot;</span>
  205. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  206. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  207. <div class="viewcode-block" id="Future.add_done_callback"><a class="viewcode-back" href="../grpc.html#grpc.Future.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">fn</span><span class="p">):</span>
  208. <span class="sd">&quot;&quot;&quot;Adds a function to be called at completion of the computation.</span>
  209. <span class="sd"> The callback will be passed this Future object describing the outcome of</span>
  210. <span class="sd"> the computation.</span>
  211. <span class="sd"> If the computation has already completed, the callback will be called</span>
  212. <span class="sd"> immediately.</span>
  213. <span class="sd"> Args:</span>
  214. <span class="sd"> fn: A callable taking this Future object as its single parameter.</span>
  215. <span class="sd"> &quot;&quot;&quot;</span>
  216. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div>
  217. <span class="c1">################################ gRPC Enums ##################################</span>
  218. <span class="nd">@enum</span><span class="o">.</span><span class="n">unique</span>
  219. <div class="viewcode-block" id="ChannelConnectivity"><a class="viewcode-back" href="../grpc.html#grpc.ChannelConnectivity">[docs]</a><span class="k">class</span> <span class="nc">ChannelConnectivity</span><span class="p">(</span><span class="n">enum</span><span class="o">.</span><span class="n">Enum</span><span class="p">):</span>
  220. <span class="sd">&quot;&quot;&quot;Mirrors grpc_connectivity_state in the gRPC Core.</span>
  221. <span class="sd"> Attributes:</span>
  222. <span class="sd"> IDLE: The channel is idle.</span>
  223. <span class="sd"> CONNECTING: The channel is connecting.</span>
  224. <span class="sd"> READY: The channel is ready to conduct RPCs.</span>
  225. <span class="sd"> TRANSIENT_FAILURE: The channel has seen a failure from which it expects to</span>
  226. <span class="sd"> recover.</span>
  227. <span class="sd"> SHUTDOWN: The channel has seen a failure from which it cannot recover.</span>
  228. <span class="sd"> &quot;&quot;&quot;</span>
  229. <span class="n">IDLE</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">ConnectivityState</span><span class="o">.</span><span class="n">idle</span><span class="p">,</span> <span class="s1">&#39;idle&#39;</span><span class="p">)</span>
  230. <span class="n">CONNECTING</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">ConnectivityState</span><span class="o">.</span><span class="n">connecting</span><span class="p">,</span> <span class="s1">&#39;connecting&#39;</span><span class="p">)</span>
  231. <span class="n">READY</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">ConnectivityState</span><span class="o">.</span><span class="n">ready</span><span class="p">,</span> <span class="s1">&#39;ready&#39;</span><span class="p">)</span>
  232. <span class="n">TRANSIENT_FAILURE</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">ConnectivityState</span><span class="o">.</span><span class="n">transient_failure</span><span class="p">,</span>
  233. <span class="s1">&#39;transient failure&#39;</span><span class="p">)</span>
  234. <span class="n">SHUTDOWN</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">ConnectivityState</span><span class="o">.</span><span class="n">shutdown</span><span class="p">,</span> <span class="s1">&#39;shutdown&#39;</span><span class="p">)</span></div>
  235. <span class="nd">@enum</span><span class="o">.</span><span class="n">unique</span>
  236. <div class="viewcode-block" id="StatusCode"><a class="viewcode-back" href="../grpc.html#grpc.StatusCode">[docs]</a><span class="k">class</span> <span class="nc">StatusCode</span><span class="p">(</span><span class="n">enum</span><span class="o">.</span><span class="n">Enum</span><span class="p">):</span>
  237. <span class="sd">&quot;&quot;&quot;Mirrors grpc_status_code in the gRPC Core.&quot;&quot;&quot;</span>
  238. <span class="n">OK</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">ok</span><span class="p">,</span> <span class="s1">&#39;ok&#39;</span><span class="p">)</span>
  239. <span class="n">CANCELLED</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">cancelled</span><span class="p">,</span> <span class="s1">&#39;cancelled&#39;</span><span class="p">)</span>
  240. <span class="n">UNKNOWN</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">unknown</span><span class="p">,</span> <span class="s1">&#39;unknown&#39;</span><span class="p">)</span>
  241. <span class="n">INVALID_ARGUMENT</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">invalid_argument</span><span class="p">,</span> <span class="s1">&#39;invalid argument&#39;</span><span class="p">)</span>
  242. <span class="n">DEADLINE_EXCEEDED</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">deadline_exceeded</span><span class="p">,</span>
  243. <span class="s1">&#39;deadline exceeded&#39;</span><span class="p">)</span>
  244. <span class="n">NOT_FOUND</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">not_found</span><span class="p">,</span> <span class="s1">&#39;not found&#39;</span><span class="p">)</span>
  245. <span class="n">ALREADY_EXISTS</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">already_exists</span><span class="p">,</span> <span class="s1">&#39;already exists&#39;</span><span class="p">)</span>
  246. <span class="n">PERMISSION_DENIED</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">permission_denied</span><span class="p">,</span>
  247. <span class="s1">&#39;permission denied&#39;</span><span class="p">)</span>
  248. <span class="n">RESOURCE_EXHAUSTED</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">resource_exhausted</span><span class="p">,</span>
  249. <span class="s1">&#39;resource exhausted&#39;</span><span class="p">)</span>
  250. <span class="n">FAILED_PRECONDITION</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">failed_precondition</span><span class="p">,</span>
  251. <span class="s1">&#39;failed precondition&#39;</span><span class="p">)</span>
  252. <span class="n">ABORTED</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">aborted</span><span class="p">,</span> <span class="s1">&#39;aborted&#39;</span><span class="p">)</span>
  253. <span class="n">OUT_OF_RANGE</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">out_of_range</span><span class="p">,</span> <span class="s1">&#39;out of range&#39;</span><span class="p">)</span>
  254. <span class="n">UNIMPLEMENTED</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">unimplemented</span><span class="p">,</span> <span class="s1">&#39;unimplemented&#39;</span><span class="p">)</span>
  255. <span class="n">INTERNAL</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">internal</span><span class="p">,</span> <span class="s1">&#39;internal&#39;</span><span class="p">)</span>
  256. <span class="n">UNAVAILABLE</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">unavailable</span><span class="p">,</span> <span class="s1">&#39;unavailable&#39;</span><span class="p">)</span>
  257. <span class="n">DATA_LOSS</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">data_loss</span><span class="p">,</span> <span class="s1">&#39;data loss&#39;</span><span class="p">)</span>
  258. <span class="n">UNAUTHENTICATED</span> <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">unauthenticated</span><span class="p">,</span> <span class="s1">&#39;unauthenticated&#39;</span><span class="p">)</span></div>
  259. <span class="c1">############################# gRPC Exceptions ################################</span>
  260. <div class="viewcode-block" id="RpcError"><a class="viewcode-back" href="../grpc.html#grpc.RpcError">[docs]</a><span class="k">class</span> <span class="nc">RpcError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
  261. <span class="sd">&quot;&quot;&quot;Raised by the gRPC library to indicate non-OK-status RPC termination.&quot;&quot;&quot;</span></div>
  262. <span class="c1">############################## Shared Context ################################</span>
  263. <div class="viewcode-block" id="RpcContext"><a class="viewcode-back" href="../grpc.html#grpc.RpcContext">[docs]</a><span class="k">class</span> <span class="nc">RpcContext</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>
  264. <span class="sd">&quot;&quot;&quot;Provides RPC-related information and action.&quot;&quot;&quot;</span>
  265. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  266. <div class="viewcode-block" id="RpcContext.is_active"><a class="viewcode-back" href="../grpc.html#grpc.RpcContext.is_active">[docs]</a> <span class="k">def</span> <span class="nf">is_active</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  267. <span class="sd">&quot;&quot;&quot;Describes whether the RPC is active or has terminated.&quot;&quot;&quot;</span>
  268. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  269. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  270. <div class="viewcode-block" id="RpcContext.time_remaining"><a class="viewcode-back" href="../grpc.html#grpc.RpcContext.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>
  271. <span class="sd">&quot;&quot;&quot;Describes the length of allowed time remaining for the RPC.</span>
  272. <span class="sd"> Returns:</span>
  273. <span class="sd"> A nonnegative float indicating the length of allowed time in seconds</span>
  274. <span class="sd"> remaining for the RPC to complete before it is considered to have timed</span>
  275. <span class="sd"> out, or None if no deadline was specified for the RPC.</span>
  276. <span class="sd"> &quot;&quot;&quot;</span>
  277. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  278. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  279. <div class="viewcode-block" id="RpcContext.cancel"><a class="viewcode-back" href="../grpc.html#grpc.RpcContext.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>
  280. <span class="sd">&quot;&quot;&quot;Cancels the RPC.</span>
  281. <span class="sd"> Idempotent and has no effect if the RPC has already terminated.</span>
  282. <span class="sd"> &quot;&quot;&quot;</span>
  283. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  284. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  285. <div class="viewcode-block" id="RpcContext.add_callback"><a class="viewcode-back" href="../grpc.html#grpc.RpcContext.add_callback">[docs]</a> <span class="k">def</span> <span class="nf">add_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="p">):</span>
  286. <span class="sd">&quot;&quot;&quot;Registers a callback to be called on RPC termination.</span>
  287. <span class="sd"> Args:</span>
  288. <span class="sd"> callback: A no-parameter callable to be called on RPC termination.</span>
  289. <span class="sd"> Returns:</span>
  290. <span class="sd"> True if the callback was added and will be called later; False if the</span>
  291. <span class="sd"> callback was not added and will not later be called (because the RPC</span>
  292. <span class="sd"> already terminated or some other reason).</span>
  293. <span class="sd"> &quot;&quot;&quot;</span>
  294. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div>
  295. <span class="c1">######################### Invocation-Side Context ############################</span>
  296. <div class="viewcode-block" id="Call"><a class="viewcode-back" href="../grpc.html#grpc.Call">[docs]</a><span class="k">class</span> <span class="nc">Call</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">,</span> <span class="n">RpcContext</span><span class="p">)):</span>
  297. <span class="sd">&quot;&quot;&quot;Invocation-side utility object for an RPC.&quot;&quot;&quot;</span>
  298. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  299. <div class="viewcode-block" id="Call.initial_metadata"><a class="viewcode-back" href="../grpc.html#grpc.Call.initial_metadata">[docs]</a> <span class="k">def</span> <span class="nf">initial_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  300. <span class="sd">&quot;&quot;&quot;Accesses the initial metadata from the service-side of the RPC.</span>
  301. <span class="sd"> This method blocks until the value is available.</span>
  302. <span class="sd"> Returns:</span>
  303. <span class="sd"> The initial :term:`metadata`.</span>
  304. <span class="sd"> &quot;&quot;&quot;</span>
  305. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  306. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  307. <div class="viewcode-block" id="Call.trailing_metadata"><a class="viewcode-back" href="../grpc.html#grpc.Call.trailing_metadata">[docs]</a> <span class="k">def</span> <span class="nf">trailing_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  308. <span class="sd">&quot;&quot;&quot;Accesses the trailing metadata from the service-side of the RPC.</span>
  309. <span class="sd"> This method blocks until the value is available.</span>
  310. <span class="sd"> Returns:</span>
  311. <span class="sd"> The trailing :term:`metadata`.</span>
  312. <span class="sd"> &quot;&quot;&quot;</span>
  313. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  314. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  315. <div class="viewcode-block" id="Call.code"><a class="viewcode-back" href="../grpc.html#grpc.Call.code">[docs]</a> <span class="k">def</span> <span class="nf">code</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  316. <span class="sd">&quot;&quot;&quot;Accesses the status code emitted by the service-side of the RPC.</span>
  317. <span class="sd"> This method blocks until the value is available.</span>
  318. <span class="sd"> Returns:</span>
  319. <span class="sd"> The StatusCode value for the RPC.</span>
  320. <span class="sd"> &quot;&quot;&quot;</span>
  321. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  322. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  323. <div class="viewcode-block" id="Call.details"><a class="viewcode-back" href="../grpc.html#grpc.Call.details">[docs]</a> <span class="k">def</span> <span class="nf">details</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  324. <span class="sd">&quot;&quot;&quot;Accesses the details value emitted by the service-side of the RPC.</span>
  325. <span class="sd"> This method blocks until the value is available.</span>
  326. <span class="sd"> Returns:</span>
  327. <span class="sd"> The details string of the RPC.</span>
  328. <span class="sd"> &quot;&quot;&quot;</span>
  329. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div>
  330. <span class="c1">############ Authentication &amp; Authorization Interfaces &amp; Classes #############</span>
  331. <div class="viewcode-block" id="ChannelCredentials"><a class="viewcode-back" href="../grpc.html#grpc.ChannelCredentials">[docs]</a><span class="k">class</span> <span class="nc">ChannelCredentials</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
  332. <span class="sd">&quot;&quot;&quot;A value encapsulating the data required to create a secure Channel.</span>
  333. <span class="sd"> This class has no supported interface - it exists to define the type of its</span>
  334. <span class="sd"> instances and its instances exist to be passed to other functions.</span>
  335. <span class="sd"> &quot;&quot;&quot;</span>
  336. <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">credentials</span><span class="p">):</span>
  337. <span class="bp">self</span><span class="o">.</span><span class="n">_credentials</span> <span class="o">=</span> <span class="n">credentials</span></div>
  338. <div class="viewcode-block" id="CallCredentials"><a class="viewcode-back" href="../grpc.html#grpc.CallCredentials">[docs]</a><span class="k">class</span> <span class="nc">CallCredentials</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
  339. <span class="sd">&quot;&quot;&quot;A value encapsulating data asserting an identity over a channel.</span>
  340. <span class="sd"> A CallCredentials may be composed with ChannelCredentials to always assert</span>
  341. <span class="sd"> identity for every call over that Channel.</span>
  342. <span class="sd"> This class has no supported interface - it exists to define the type of its</span>
  343. <span class="sd"> instances and its instances exist to be passed to other functions.</span>
  344. <span class="sd"> &quot;&quot;&quot;</span>
  345. <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">credentials</span><span class="p">):</span>
  346. <span class="bp">self</span><span class="o">.</span><span class="n">_credentials</span> <span class="o">=</span> <span class="n">credentials</span></div>
  347. <div class="viewcode-block" id="AuthMetadataContext"><a class="viewcode-back" href="../grpc.html#grpc.AuthMetadataContext">[docs]</a><span class="k">class</span> <span class="nc">AuthMetadataContext</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>
  348. <span class="sd">&quot;&quot;&quot;Provides information to call credentials metadata plugins.</span>
  349. <span class="sd"> Attributes:</span>
  350. <span class="sd"> service_url: A string URL of the service being called into.</span>
  351. <span class="sd"> method_name: A string of the fully qualified method name being called.</span>
  352. <span class="sd"> &quot;&quot;&quot;</span></div>
  353. <div class="viewcode-block" id="AuthMetadataPluginCallback"><a class="viewcode-back" href="../grpc.html#grpc.AuthMetadataPluginCallback">[docs]</a><span class="k">class</span> <span class="nc">AuthMetadataPluginCallback</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>
  354. <span class="sd">&quot;&quot;&quot;Callback object received by a metadata plugin.&quot;&quot;&quot;</span>
  355. <div class="viewcode-block" id="AuthMetadataPluginCallback.__call__"><a class="viewcode-back" href="../grpc.html#grpc.AuthMetadataPluginCallback.__call__">[docs]</a> <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">,</span> <span class="n">error</span><span class="p">):</span>
  356. <span class="sd">&quot;&quot;&quot;Inform the gRPC runtime of the metadata to construct a CallCredentials.</span>
  357. <span class="sd"> Args:</span>
  358. <span class="sd"> metadata: The :term:`metadata` used to construct the CallCredentials.</span>
  359. <span class="sd"> error: An Exception to indicate error or None to indicate success.</span>
  360. <span class="sd"> &quot;&quot;&quot;</span>
  361. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div>
  362. <div class="viewcode-block" id="AuthMetadataPlugin"><a class="viewcode-back" href="../grpc.html#grpc.AuthMetadataPlugin">[docs]</a><span class="k">class</span> <span class="nc">AuthMetadataPlugin</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>
  363. <span class="sd">&quot;&quot;&quot;A specification for custom authentication.&quot;&quot;&quot;</span>
  364. <div class="viewcode-block" id="AuthMetadataPlugin.__call__"><a class="viewcode-back" href="../grpc.html#grpc.AuthMetadataPlugin.__call__">[docs]</a> <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">,</span> <span class="n">callback</span><span class="p">):</span>
  365. <span class="sd">&quot;&quot;&quot;Implements authentication by passing metadata to a callback.</span>
  366. <span class="sd"> Implementations of this method must not block.</span>
  367. <span class="sd"> Args:</span>
  368. <span class="sd"> context: An AuthMetadataContext providing information on the RPC that the</span>
  369. <span class="sd"> plugin is being called to authenticate.</span>
  370. <span class="sd"> callback: An AuthMetadataPluginCallback to be invoked either synchronously</span>
  371. <span class="sd"> or asynchronously.</span>
  372. <span class="sd"> &quot;&quot;&quot;</span>
  373. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div>
  374. <div class="viewcode-block" id="ServerCredentials"><a class="viewcode-back" href="../grpc.html#grpc.ServerCredentials">[docs]</a><span class="k">class</span> <span class="nc">ServerCredentials</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
  375. <span class="sd">&quot;&quot;&quot;A value encapsulating the data required to open a secure port on a Server.</span>
  376. <span class="sd"> This class has no supported interface - it exists to define the type of its</span>
  377. <span class="sd"> instances and its instances exist to be passed to other functions.</span>
  378. <span class="sd"> &quot;&quot;&quot;</span>
  379. <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">credentials</span><span class="p">):</span>
  380. <span class="bp">self</span><span class="o">.</span><span class="n">_credentials</span> <span class="o">=</span> <span class="n">credentials</span></div>
  381. <span class="c1">######################## Multi-Callable Interfaces ###########################</span>
  382. <div class="viewcode-block" id="UnaryUnaryMultiCallable"><a class="viewcode-back" href="../grpc.html#grpc.UnaryUnaryMultiCallable">[docs]</a><span class="k">class</span> <span class="nc">UnaryUnaryMultiCallable</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>
  383. <span class="sd">&quot;&quot;&quot;Affords invoking a unary-unary RPC.&quot;&quot;&quot;</span>
  384. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  385. <div class="viewcode-block" id="UnaryUnaryMultiCallable.__call__"><a class="viewcode-back" href="../grpc.html#grpc.UnaryUnaryMultiCallable.__call__">[docs]</a> <span class="k">def</span> <span class="nf">__call__</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">timeout</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">credentials</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  386. <span class="sd">&quot;&quot;&quot;Synchronously invokes the underlying RPC.</span>
  387. <span class="sd"> Args:</span>
  388. <span class="sd"> request: The request value for the RPC.</span>
  389. <span class="sd"> timeout: An optional duration of time in seconds to allow for the RPC.</span>
  390. <span class="sd"> metadata: Optional :term:`metadata` to be transmitted to the</span>
  391. <span class="sd"> service-side of the RPC.</span>
  392. <span class="sd"> credentials: An optional CallCredentials for the RPC.</span>
  393. <span class="sd"> Returns:</span>
  394. <span class="sd"> The response value for the RPC.</span>
  395. <span class="sd"> Raises:</span>
  396. <span class="sd"> RpcError: Indicating that the RPC terminated with non-OK status. The</span>
  397. <span class="sd"> raised RpcError will also be a Call for the RPC affording the RPC&#39;s</span>
  398. <span class="sd"> metadata, status code, and details.</span>
  399. <span class="sd"> &quot;&quot;&quot;</span>
  400. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  401. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  402. <div class="viewcode-block" id="UnaryUnaryMultiCallable.with_call"><a class="viewcode-back" href="../grpc.html#grpc.UnaryUnaryMultiCallable.with_call">[docs]</a> <span class="k">def</span> <span class="nf">with_call</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">timeout</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">credentials</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  403. <span class="sd">&quot;&quot;&quot;Synchronously invokes the underlying RPC.</span>
  404. <span class="sd"> Args:</span>
  405. <span class="sd"> request: The request value for the RPC.</span>
  406. <span class="sd"> timeout: An optional durating of time in seconds to allow for the RPC.</span>
  407. <span class="sd"> metadata: Optional :term:`metadata` to be transmitted to the</span>
  408. <span class="sd"> service-side of the RPC.</span>
  409. <span class="sd"> credentials: An optional CallCredentials for the RPC.</span>
  410. <span class="sd"> Returns:</span>
  411. <span class="sd"> The response value for the RPC and a Call value for the RPC.</span>
  412. <span class="sd"> Raises:</span>
  413. <span class="sd"> RpcError: Indicating that the RPC terminated with non-OK status. The</span>
  414. <span class="sd"> raised RpcError will also be a Call for the RPC affording the RPC&#39;s</span>
  415. <span class="sd"> metadata, status code, and details.</span>
  416. <span class="sd"> &quot;&quot;&quot;</span>
  417. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  418. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  419. <div class="viewcode-block" id="UnaryUnaryMultiCallable.future"><a class="viewcode-back" href="../grpc.html#grpc.UnaryUnaryMultiCallable.future">[docs]</a> <span class="k">def</span> <span class="nf">future</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">timeout</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">credentials</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  420. <span class="sd">&quot;&quot;&quot;Asynchronously invokes the underlying RPC.</span>
  421. <span class="sd"> Args:</span>
  422. <span class="sd"> request: The request value for the RPC.</span>
  423. <span class="sd"> timeout: An optional duration of time in seconds to allow for the RPC.</span>
  424. <span class="sd"> metadata: Optional :term:`metadata` to be transmitted to the</span>
  425. <span class="sd"> service-side of the RPC.</span>
  426. <span class="sd"> credentials: An optional CallCredentials for the RPC.</span>
  427. <span class="sd"> Returns:</span>
  428. <span class="sd"> An object that is both a Call for the RPC and a Future. In the event of</span>
  429. <span class="sd"> RPC completion, the return Call-Future&#39;s result value will be the</span>
  430. <span class="sd"> response message of the RPC. Should the event terminate with non-OK</span>
  431. <span class="sd"> status, the returned Call-Future&#39;s exception value will be an RpcError.</span>
  432. <span class="sd"> &quot;&quot;&quot;</span>
  433. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div>
  434. <div class="viewcode-block" id="UnaryStreamMultiCallable"><a class="viewcode-back" href="../grpc.html#grpc.UnaryStreamMultiCallable">[docs]</a><span class="k">class</span> <span class="nc">UnaryStreamMultiCallable</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>
  435. <span class="sd">&quot;&quot;&quot;Affords invoking a unary-stream RPC.&quot;&quot;&quot;</span>
  436. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  437. <div class="viewcode-block" id="UnaryStreamMultiCallable.__call__"><a class="viewcode-back" href="../grpc.html#grpc.UnaryStreamMultiCallable.__call__">[docs]</a> <span class="k">def</span> <span class="nf">__call__</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">timeout</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">credentials</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  438. <span class="sd">&quot;&quot;&quot;Invokes the underlying RPC.</span>
  439. <span class="sd"> Args:</span>
  440. <span class="sd"> request: The request value for the RPC.</span>
  441. <span class="sd"> timeout: An optional duration of time in seconds to allow for the RPC.</span>
  442. <span class="sd"> metadata: An optional :term:`metadata` to be transmitted to the</span>
  443. <span class="sd"> service-side of the RPC.</span>
  444. <span class="sd"> credentials: An optional CallCredentials for the RPC.</span>
  445. <span class="sd"> Returns:</span>
  446. <span class="sd"> An object that is both a Call for the RPC and an iterator of response</span>
  447. <span class="sd"> values. Drawing response values from the returned Call-iterator may</span>
  448. <span class="sd"> raise RpcError indicating termination of the RPC with non-OK status.</span>
  449. <span class="sd"> &quot;&quot;&quot;</span>
  450. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div>
  451. <div class="viewcode-block" id="StreamUnaryMultiCallable"><a class="viewcode-back" href="../grpc.html#grpc.StreamUnaryMultiCallable">[docs]</a><span class="k">class</span> <span class="nc">StreamUnaryMultiCallable</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>
  452. <span class="sd">&quot;&quot;&quot;Affords invoking a stream-unary RPC in any call style.&quot;&quot;&quot;</span>
  453. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  454. <div class="viewcode-block" id="StreamUnaryMultiCallable.__call__"><a class="viewcode-back" href="../grpc.html#grpc.StreamUnaryMultiCallable.__call__">[docs]</a> <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
  455. <span class="n">request_iterator</span><span class="p">,</span>
  456. <span class="n">timeout</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  457. <span class="n">metadata</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  458. <span class="n">credentials</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  459. <span class="sd">&quot;&quot;&quot;Synchronously invokes the underlying RPC.</span>
  460. <span class="sd"> Args:</span>
  461. <span class="sd"> request_iterator: An iterator that yields request values for the RPC.</span>
  462. <span class="sd"> timeout: An optional duration of time in seconds to allow for the RPC.</span>
  463. <span class="sd"> metadata: Optional :term:`metadata` to be transmitted to the</span>
  464. <span class="sd"> service-side of the RPC.</span>
  465. <span class="sd"> credentials: An optional CallCredentials for the RPC.</span>
  466. <span class="sd"> Returns:</span>
  467. <span class="sd"> The response value for the RPC.</span>
  468. <span class="sd"> Raises:</span>
  469. <span class="sd"> RpcError: Indicating that the RPC terminated with non-OK status. The</span>
  470. <span class="sd"> raised RpcError will also be a Call for the RPC affording the RPC&#39;s</span>
  471. <span class="sd"> metadata, status code, and details.</span>
  472. <span class="sd"> &quot;&quot;&quot;</span>
  473. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  474. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  475. <div class="viewcode-block" id="StreamUnaryMultiCallable.with_call"><a class="viewcode-back" href="../grpc.html#grpc.StreamUnaryMultiCallable.with_call">[docs]</a> <span class="k">def</span> <span class="nf">with_call</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
  476. <span class="n">request_iterator</span><span class="p">,</span>
  477. <span class="n">timeout</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  478. <span class="n">metadata</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  479. <span class="n">credentials</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  480. <span class="sd">&quot;&quot;&quot;Synchronously invokes the underlying RPC.</span>
  481. <span class="sd"> Args:</span>
  482. <span class="sd"> request_iterator: An iterator that yields request values for the RPC.</span>
  483. <span class="sd"> timeout: An optional duration of time in seconds to allow for the RPC.</span>
  484. <span class="sd"> metadata: Optional :term:`metadata` to be transmitted to the</span>
  485. <span class="sd"> service-side of the RPC.</span>
  486. <span class="sd"> credentials: An optional CallCredentials for the RPC.</span>
  487. <span class="sd"> Returns:</span>
  488. <span class="sd"> The response value for the RPC and a Call for the RPC.</span>
  489. <span class="sd"> Raises:</span>
  490. <span class="sd"> RpcError: Indicating that the RPC terminated with non-OK status. The</span>
  491. <span class="sd"> raised RpcError will also be a Call for the RPC affording the RPC&#39;s</span>
  492. <span class="sd"> metadata, status code, and details.</span>
  493. <span class="sd"> &quot;&quot;&quot;</span>
  494. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  495. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  496. <div class="viewcode-block" id="StreamUnaryMultiCallable.future"><a class="viewcode-back" href="../grpc.html#grpc.StreamUnaryMultiCallable.future">[docs]</a> <span class="k">def</span> <span class="nf">future</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
  497. <span class="n">request_iterator</span><span class="p">,</span>
  498. <span class="n">timeout</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  499. <span class="n">metadata</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  500. <span class="n">credentials</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  501. <span class="sd">&quot;&quot;&quot;Asynchronously invokes the underlying RPC.</span>
  502. <span class="sd"> Args:</span>
  503. <span class="sd"> request_iterator: An iterator that yields request values for the RPC.</span>
  504. <span class="sd"> timeout: An optional duration of time in seconds to allow for the RPC.</span>
  505. <span class="sd"> metadata: Optional :term:`metadata` to be transmitted to the</span>
  506. <span class="sd"> service-side of the RPC.</span>
  507. <span class="sd"> credentials: An optional CallCredentials for the RPC.</span>
  508. <span class="sd"> Returns:</span>
  509. <span class="sd"> An object that is both a Call for the RPC and a Future. In the event of</span>
  510. <span class="sd"> RPC completion, the return Call-Future&#39;s result value will be the</span>
  511. <span class="sd"> response message of the RPC. Should the event terminate with non-OK</span>
  512. <span class="sd"> status, the returned Call-Future&#39;s exception value will be an RpcError.</span>
  513. <span class="sd"> &quot;&quot;&quot;</span>
  514. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div>
  515. <div class="viewcode-block" id="StreamStreamMultiCallable"><a class="viewcode-back" href="../grpc.html#grpc.StreamStreamMultiCallable">[docs]</a><span class="k">class</span> <span class="nc">StreamStreamMultiCallable</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>
  516. <span class="sd">&quot;&quot;&quot;Affords invoking a stream-stream RPC in any call style.&quot;&quot;&quot;</span>
  517. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  518. <div class="viewcode-block" id="StreamStreamMultiCallable.__call__"><a class="viewcode-back" href="../grpc.html#grpc.StreamStreamMultiCallable.__call__">[docs]</a> <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
  519. <span class="n">request_iterator</span><span class="p">,</span>
  520. <span class="n">timeout</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  521. <span class="n">metadata</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  522. <span class="n">credentials</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  523. <span class="sd">&quot;&quot;&quot;Invokes the underlying RPC.</span>
  524. <span class="sd"> Args:</span>
  525. <span class="sd"> request_iterator: An iterator that yields request values for the RPC.</span>
  526. <span class="sd"> timeout: An optional duration of time in seconds to allow for the RPC.</span>
  527. <span class="sd"> metadata: Optional :term:`metadata` to be transmitted to the</span>
  528. <span class="sd"> service-side of the RPC.</span>
  529. <span class="sd"> credentials: An optional CallCredentials for the RPC.</span>
  530. <span class="sd"> Returns:</span>
  531. <span class="sd"> An object that is both a Call for the RPC and an iterator of response</span>
  532. <span class="sd"> values. Drawing response values from the returned Call-iterator may</span>
  533. <span class="sd"> raise RpcError indicating termination of the RPC with non-OK status.</span>
  534. <span class="sd"> &quot;&quot;&quot;</span>
  535. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div>
  536. <span class="c1">############################# Channel Interface ##############################</span>
  537. <div class="viewcode-block" id="Channel"><a class="viewcode-back" href="../grpc.html#grpc.Channel">[docs]</a><span class="k">class</span> <span class="nc">Channel</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>
  538. <span class="sd">&quot;&quot;&quot;Affords RPC invocation via generic methods.&quot;&quot;&quot;</span>
  539. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  540. <div class="viewcode-block" id="Channel.subscribe"><a class="viewcode-back" href="../grpc.html#grpc.Channel.subscribe">[docs]</a> <span class="k">def</span> <span class="nf">subscribe</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">try_to_connect</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
  541. <span class="sd">&quot;&quot;&quot;Subscribes to this Channel&#39;s connectivity.</span>
  542. <span class="sd"> Args:</span>
  543. <span class="sd"> callback: A callable to be invoked and passed a ChannelConnectivity value</span>
  544. <span class="sd"> describing this Channel&#39;s connectivity. The callable will be invoked</span>
  545. <span class="sd"> immediately upon subscription and again for every change to this</span>
  546. <span class="sd"> Channel&#39;s connectivity thereafter until it is unsubscribed or this</span>
  547. <span class="sd"> Channel object goes out of scope.</span>
  548. <span class="sd"> try_to_connect: A boolean indicating whether or not this Channel should</span>
  549. <span class="sd"> attempt to connect if it is not already connected and ready to conduct</span>
  550. <span class="sd"> RPCs.</span>
  551. <span class="sd"> &quot;&quot;&quot;</span>
  552. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  553. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  554. <div class="viewcode-block" id="Channel.unsubscribe"><a class="viewcode-back" href="../grpc.html#grpc.Channel.unsubscribe">[docs]</a> <span class="k">def</span> <span class="nf">unsubscribe</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="p">):</span>
  555. <span class="sd">&quot;&quot;&quot;Unsubscribes a callback from this Channel&#39;s connectivity.</span>
  556. <span class="sd"> Args:</span>
  557. <span class="sd"> callback: A callable previously registered with this Channel from having</span>
  558. <span class="sd"> been passed to its &quot;subscribe&quot; method.</span>
  559. <span class="sd"> &quot;&quot;&quot;</span>
  560. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  561. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  562. <div class="viewcode-block" id="Channel.unary_unary"><a class="viewcode-back" href="../grpc.html#grpc.Channel.unary_unary">[docs]</a> <span class="k">def</span> <span class="nf">unary_unary</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
  563. <span class="n">method</span><span class="p">,</span>
  564. <span class="n">request_serializer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  565. <span class="n">response_deserializer</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  566. <span class="sd">&quot;&quot;&quot;Creates a UnaryUnaryMultiCallable for a unary-unary method.</span>
  567. <span class="sd"> Args:</span>
  568. <span class="sd"> method: The name of the RPC method.</span>
  569. <span class="sd"> request_serializer: Optional behaviour for serializing the request</span>
  570. <span class="sd"> message. Request goes unserialized in case None is passed.</span>
  571. <span class="sd"> response_deserializer: Optional behaviour for deserializing the response</span>
  572. <span class="sd"> message. Response goes undeserialized in case None is passed.</span>
  573. <span class="sd"> Returns:</span>
  574. <span class="sd"> A UnaryUnaryMultiCallable value for the named unary-unary method.</span>
  575. <span class="sd"> &quot;&quot;&quot;</span>
  576. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  577. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  578. <div class="viewcode-block" id="Channel.unary_stream"><a class="viewcode-back" href="../grpc.html#grpc.Channel.unary_stream">[docs]</a> <span class="k">def</span> <span class="nf">unary_stream</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
  579. <span class="n">method</span><span class="p">,</span>
  580. <span class="n">request_serializer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  581. <span class="n">response_deserializer</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  582. <span class="sd">&quot;&quot;&quot;Creates a UnaryStreamMultiCallable for a unary-stream method.</span>
  583. <span class="sd"> Args:</span>
  584. <span class="sd"> method: The name of the RPC method.</span>
  585. <span class="sd"> request_serializer: Optional behaviour for serializing the request</span>
  586. <span class="sd"> message. Request goes unserialized in case None is passed.</span>
  587. <span class="sd"> response_deserializer: Optional behaviour for deserializing the response</span>
  588. <span class="sd"> message. Response goes undeserialized in case None is passed.</span>
  589. <span class="sd"> Returns:</span>
  590. <span class="sd"> A UnaryStreamMultiCallable value for the name unary-stream method.</span>
  591. <span class="sd"> &quot;&quot;&quot;</span>
  592. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  593. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  594. <div class="viewcode-block" id="Channel.stream_unary"><a class="viewcode-back" href="../grpc.html#grpc.Channel.stream_unary">[docs]</a> <span class="k">def</span> <span class="nf">stream_unary</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
  595. <span class="n">method</span><span class="p">,</span>
  596. <span class="n">request_serializer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  597. <span class="n">response_deserializer</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  598. <span class="sd">&quot;&quot;&quot;Creates a StreamUnaryMultiCallable for a stream-unary method.</span>
  599. <span class="sd"> Args:</span>
  600. <span class="sd"> method: The name of the RPC method.</span>
  601. <span class="sd"> request_serializer: Optional behaviour for serializing the request</span>
  602. <span class="sd"> message. Request goes unserialized in case None is passed.</span>
  603. <span class="sd"> response_deserializer: Optional behaviour for deserializing the response</span>
  604. <span class="sd"> message. Response goes undeserialized in case None is passed.</span>
  605. <span class="sd"> Returns:</span>
  606. <span class="sd"> A StreamUnaryMultiCallable value for the named stream-unary method.</span>
  607. <span class="sd"> &quot;&quot;&quot;</span>
  608. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  609. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  610. <div class="viewcode-block" id="Channel.stream_stream"><a class="viewcode-back" href="../grpc.html#grpc.Channel.stream_stream">[docs]</a> <span class="k">def</span> <span class="nf">stream_stream</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
  611. <span class="n">method</span><span class="p">,</span>
  612. <span class="n">request_serializer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  613. <span class="n">response_deserializer</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  614. <span class="sd">&quot;&quot;&quot;Creates a StreamStreamMultiCallable for a stream-stream method.</span>
  615. <span class="sd"> Args:</span>
  616. <span class="sd"> method: The name of the RPC method.</span>
  617. <span class="sd"> request_serializer: Optional behaviour for serializing the request</span>
  618. <span class="sd"> message. Request goes unserialized in case None is passed.</span>
  619. <span class="sd"> response_deserializer: Optional behaviour for deserializing the response</span>
  620. <span class="sd"> message. Response goes undeserialized in case None is passed.</span>
  621. <span class="sd"> Returns:</span>
  622. <span class="sd"> A StreamStreamMultiCallable value for the named stream-stream method.</span>
  623. <span class="sd"> &quot;&quot;&quot;</span>
  624. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div>
  625. <span class="c1">########################## Service-Side Context ##############################</span>
  626. <div class="viewcode-block" id="ServicerContext"><a class="viewcode-back" href="../grpc.html#grpc.ServicerContext">[docs]</a><span class="k">class</span> <span class="nc">ServicerContext</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">,</span> <span class="n">RpcContext</span><span class="p">)):</span>
  627. <span class="sd">&quot;&quot;&quot;A context object passed to method implementations.&quot;&quot;&quot;</span>
  628. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  629. <div class="viewcode-block" id="ServicerContext.invocation_metadata"><a class="viewcode-back" href="../grpc.html#grpc.ServicerContext.invocation_metadata">[docs]</a> <span class="k">def</span> <span class="nf">invocation_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  630. <span class="sd">&quot;&quot;&quot;Accesses the metadata from the invocation-side of the RPC.</span>
  631. <span class="sd"> Returns:</span>
  632. <span class="sd"> The invocation :term:`metadata`.</span>
  633. <span class="sd"> &quot;&quot;&quot;</span>
  634. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  635. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  636. <div class="viewcode-block" id="ServicerContext.peer"><a class="viewcode-back" href="../grpc.html#grpc.ServicerContext.peer">[docs]</a> <span class="k">def</span> <span class="nf">peer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  637. <span class="sd">&quot;&quot;&quot;Identifies the peer that invoked the RPC being serviced.</span>
  638. <span class="sd"> Returns:</span>
  639. <span class="sd"> A string identifying the peer that invoked the RPC being serviced.</span>
  640. <span class="sd"> &quot;&quot;&quot;</span>
  641. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  642. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  643. <div class="viewcode-block" id="ServicerContext.send_initial_metadata"><a class="viewcode-back" href="../grpc.html#grpc.ServicerContext.send_initial_metadata">[docs]</a> <span class="k">def</span> <span class="nf">send_initial_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">initial_metadata</span><span class="p">):</span>
  644. <span class="sd">&quot;&quot;&quot;Sends the initial metadata value to the invocation-side of the RPC.</span>
  645. <span class="sd"> This method need not be called by method implementations if they have no</span>
  646. <span class="sd"> service-side initial metadata to transmit.</span>
  647. <span class="sd"> Args:</span>
  648. <span class="sd"> initial_metadata: The initial :term:`metadata`.</span>
  649. <span class="sd"> &quot;&quot;&quot;</span>
  650. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  651. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  652. <div class="viewcode-block" id="ServicerContext.set_trailing_metadata"><a class="viewcode-back" href="../grpc.html#grpc.ServicerContext.set_trailing_metadata">[docs]</a> <span class="k">def</span> <span class="nf">set_trailing_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">trailing_metadata</span><span class="p">):</span>
  653. <span class="sd">&quot;&quot;&quot;Accepts the trailing metadata value of the RPC.</span>
  654. <span class="sd"> This method need not be called by method implementations if they have no</span>
  655. <span class="sd"> service-side trailing metadata to transmit.</span>
  656. <span class="sd"> Args:</span>
  657. <span class="sd"> trailing_metadata: The trailing :term:`metadata`.</span>
  658. <span class="sd"> &quot;&quot;&quot;</span>
  659. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  660. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  661. <div class="viewcode-block" id="ServicerContext.set_code"><a class="viewcode-back" href="../grpc.html#grpc.ServicerContext.set_code">[docs]</a> <span class="k">def</span> <span class="nf">set_code</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">code</span><span class="p">):</span>
  662. <span class="sd">&quot;&quot;&quot;Accepts the status code of the RPC.</span>
  663. <span class="sd"> This method need not be called by method implementations if they wish the</span>
  664. <span class="sd"> gRPC runtime to determine the status code of the RPC.</span>
  665. <span class="sd"> Args:</span>
  666. <span class="sd"> code: A StatusCode value to be transmitted to the invocation side of the</span>
  667. <span class="sd"> RPC as the status code of the RPC.</span>
  668. <span class="sd"> &quot;&quot;&quot;</span>
  669. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  670. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  671. <div class="viewcode-block" id="ServicerContext.set_details"><a class="viewcode-back" href="../grpc.html#grpc.ServicerContext.set_details">[docs]</a> <span class="k">def</span> <span class="nf">set_details</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">details</span><span class="p">):</span>
  672. <span class="sd">&quot;&quot;&quot;Accepts the service-side details of the RPC.</span>
  673. <span class="sd"> This method need not be called by method implementations if they have no</span>
  674. <span class="sd"> details to transmit.</span>
  675. <span class="sd"> Args:</span>
  676. <span class="sd"> details: A string to be transmitted to the invocation side of the RPC as</span>
  677. <span class="sd"> the status details of the RPC.</span>
  678. <span class="sd"> &quot;&quot;&quot;</span>
  679. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div>
  680. <span class="c1">##################### Service-Side Handler Interfaces ########################</span>
  681. <div class="viewcode-block" id="RpcMethodHandler"><a class="viewcode-back" href="../grpc.html#grpc.RpcMethodHandler">[docs]</a><span class="k">class</span> <span class="nc">RpcMethodHandler</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>
  682. <span class="sd">&quot;&quot;&quot;An implementation of a single RPC method.</span>
  683. <span class="sd"> Attributes:</span>
  684. <span class="sd"> request_streaming: Whether the RPC supports exactly one request message or</span>
  685. <span class="sd"> any arbitrary number of request messages.</span>
  686. <span class="sd"> response_streaming: Whether the RPC supports exactly one response message or</span>
  687. <span class="sd"> any arbitrary number of response messages.</span>
  688. <span class="sd"> request_deserializer: A callable behavior that accepts a byte string and</span>
  689. <span class="sd"> returns an object suitable to be passed to this object&#39;s business logic,</span>
  690. <span class="sd"> or None to indicate that this object&#39;s business logic should be passed the</span>
  691. <span class="sd"> raw request bytes.</span>
  692. <span class="sd"> response_serializer: A callable behavior that accepts an object produced by</span>
  693. <span class="sd"> this object&#39;s business logic and returns a byte string, or None to</span>
  694. <span class="sd"> indicate that the byte strings produced by this object&#39;s business logic</span>
  695. <span class="sd"> should be transmitted on the wire as they are.</span>
  696. <span class="sd"> unary_unary: This object&#39;s application-specific business logic as a callable</span>
  697. <span class="sd"> value that takes a request value and a ServicerContext object and returns</span>
  698. <span class="sd"> a response value. Only non-None if both request_streaming and</span>
  699. <span class="sd"> response_streaming are False.</span>
  700. <span class="sd"> unary_stream: This object&#39;s application-specific business logic as a</span>
  701. <span class="sd"> callable value that takes a request value and a ServicerContext object and</span>
  702. <span class="sd"> returns an iterator of response values. Only non-None if request_streaming</span>
  703. <span class="sd"> is False and response_streaming is True.</span>
  704. <span class="sd"> stream_unary: This object&#39;s application-specific business logic as a</span>
  705. <span class="sd"> callable value that takes an iterator of request values and a</span>
  706. <span class="sd"> ServicerContext object and returns a response value. Only non-None if</span>
  707. <span class="sd"> request_streaming is True and response_streaming is False.</span>
  708. <span class="sd"> stream_stream: This object&#39;s application-specific business logic as a</span>
  709. <span class="sd"> callable value that takes an iterator of request values and a</span>
  710. <span class="sd"> ServicerContext object and returns an iterator of response values. Only</span>
  711. <span class="sd"> non-None if request_streaming and response_streaming are both True.</span>
  712. <span class="sd"> &quot;&quot;&quot;</span></div>
  713. <div class="viewcode-block" id="HandlerCallDetails"><a class="viewcode-back" href="../grpc.html#grpc.HandlerCallDetails">[docs]</a><span class="k">class</span> <span class="nc">HandlerCallDetails</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>
  714. <span class="sd">&quot;&quot;&quot;Describes an RPC that has just arrived for service.</span>
  715. <span class="sd"> Attributes:</span>
  716. <span class="sd"> method: The method name of the RPC.</span>
  717. <span class="sd"> invocation_metadata: The :term:`metadata` from the invocation side of the RPC.</span>
  718. <span class="sd"> &quot;&quot;&quot;</span></div>
  719. <div class="viewcode-block" id="GenericRpcHandler"><a class="viewcode-back" href="../grpc.html#grpc.GenericRpcHandler">[docs]</a><span class="k">class</span> <span class="nc">GenericRpcHandler</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>
  720. <span class="sd">&quot;&quot;&quot;An implementation of arbitrarily many RPC methods.&quot;&quot;&quot;</span>
  721. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  722. <div class="viewcode-block" id="GenericRpcHandler.service"><a class="viewcode-back" href="../grpc.html#grpc.GenericRpcHandler.service">[docs]</a> <span class="k">def</span> <span class="nf">service</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handler_call_details</span><span class="p">):</span>
  723. <span class="sd">&quot;&quot;&quot;Services an RPC (or not).</span>
  724. <span class="sd"> Args:</span>
  725. <span class="sd"> handler_call_details: A HandlerCallDetails describing the RPC.</span>
  726. <span class="sd"> Returns:</span>
  727. <span class="sd"> An RpcMethodHandler with which the RPC may be serviced, or None to</span>
  728. <span class="sd"> indicate that this object will not be servicing the RPC.</span>
  729. <span class="sd"> &quot;&quot;&quot;</span>
  730. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div>
  731. <div class="viewcode-block" id="ServiceRpcHandler"><a class="viewcode-back" href="../grpc.html#grpc.ServiceRpcHandler">[docs]</a><span class="k">class</span> <span class="nc">ServiceRpcHandler</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">,</span> <span class="n">GenericRpcHandler</span><span class="p">)):</span>
  732. <span class="sd">&quot;&quot;&quot;An implementation of RPC methods belonging to a service.</span>
  733. <span class="sd"> A service handles RPC methods with structured names of the form</span>
  734. <span class="sd"> &#39;/Service.Name/Service.MethodX&#39;, where &#39;Service.Name&#39; is the value</span>
  735. <span class="sd"> returned by service_name(), and &#39;Service.MethodX&#39; is the service method</span>
  736. <span class="sd"> name. A service can have multiple service methods names, but only a single</span>
  737. <span class="sd"> service name.</span>
  738. <span class="sd"> &quot;&quot;&quot;</span>
  739. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  740. <div class="viewcode-block" id="ServiceRpcHandler.service_name"><a class="viewcode-back" href="../grpc.html#grpc.ServiceRpcHandler.service_name">[docs]</a> <span class="k">def</span> <span class="nf">service_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  741. <span class="sd">&quot;&quot;&quot;Returns this services name.</span>
  742. <span class="sd"> Returns:</span>
  743. <span class="sd"> The service name.</span>
  744. <span class="sd"> &quot;&quot;&quot;</span>
  745. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div>
  746. <span class="c1">############################# Server Interface ###############################</span>
  747. <div class="viewcode-block" id="Server"><a class="viewcode-back" href="../grpc.html#grpc.Server">[docs]</a><span class="k">class</span> <span class="nc">Server</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>
  748. <span class="sd">&quot;&quot;&quot;Services RPCs.&quot;&quot;&quot;</span>
  749. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  750. <div class="viewcode-block" id="Server.add_generic_rpc_handlers"><a class="viewcode-back" href="../grpc.html#grpc.Server.add_generic_rpc_handlers">[docs]</a> <span class="k">def</span> <span class="nf">add_generic_rpc_handlers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">generic_rpc_handlers</span><span class="p">):</span>
  751. <span class="sd">&quot;&quot;&quot;Registers GenericRpcHandlers with this Server.</span>
  752. <span class="sd"> This method is only safe to call before the server is started.</span>
  753. <span class="sd"> Args:</span>
  754. <span class="sd"> generic_rpc_handlers: An iterable of GenericRpcHandlers that will be used</span>
  755. <span class="sd"> to service RPCs after this Server is started.</span>
  756. <span class="sd"> &quot;&quot;&quot;</span>
  757. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  758. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  759. <div class="viewcode-block" id="Server.add_insecure_port"><a class="viewcode-back" href="../grpc.html#grpc.Server.add_insecure_port">[docs]</a> <span class="k">def</span> <span class="nf">add_insecure_port</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
  760. <span class="sd">&quot;&quot;&quot;Reserves a port for insecure RPC service once this Server becomes active.</span>
  761. <span class="sd"> This method may only be called before calling this Server&#39;s start method is</span>
  762. <span class="sd"> called.</span>
  763. <span class="sd"> Args:</span>
  764. <span class="sd"> address: The address for which to open a port.</span>
  765. <span class="sd"> Returns:</span>
  766. <span class="sd"> An integer port on which RPCs will be serviced after this link has been</span>
  767. <span class="sd"> started. This is typically the same number as the port number contained</span>
  768. <span class="sd"> in the passed address, but will likely be different if the port number</span>
  769. <span class="sd"> contained in the passed address was zero.</span>
  770. <span class="sd"> &quot;&quot;&quot;</span>
  771. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  772. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  773. <div class="viewcode-block" id="Server.add_secure_port"><a class="viewcode-back" href="../grpc.html#grpc.Server.add_secure_port">[docs]</a> <span class="k">def</span> <span class="nf">add_secure_port</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">address</span><span class="p">,</span> <span class="n">server_credentials</span><span class="p">):</span>
  774. <span class="sd">&quot;&quot;&quot;Reserves a port for secure RPC service after this Server becomes active.</span>
  775. <span class="sd"> This method may only be called before calling this Server&#39;s start method is</span>
  776. <span class="sd"> called.</span>
  777. <span class="sd"> Args:</span>
  778. <span class="sd"> address: The address for which to open a port.</span>
  779. <span class="sd"> server_credentials: A ServerCredentials.</span>
  780. <span class="sd"> Returns:</span>
  781. <span class="sd"> An integer port on which RPCs will be serviced after this link has been</span>
  782. <span class="sd"> started. This is typically the same number as the port number contained</span>
  783. <span class="sd"> in the passed address, but will likely be different if the port number</span>
  784. <span class="sd"> contained in the passed address was zero.</span>
  785. <span class="sd"> &quot;&quot;&quot;</span>
  786. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  787. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  788. <div class="viewcode-block" id="Server.start"><a class="viewcode-back" href="../grpc.html#grpc.Server.start">[docs]</a> <span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  789. <span class="sd">&quot;&quot;&quot;Starts this Server&#39;s service of RPCs.</span>
  790. <span class="sd"> This method may only be called while the server is not serving RPCs (i.e. it</span>
  791. <span class="sd"> is not idempotent).</span>
  792. <span class="sd"> &quot;&quot;&quot;</span>
  793. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>
  794. <span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
  795. <div class="viewcode-block" id="Server.stop"><a class="viewcode-back" href="../grpc.html#grpc.Server.stop">[docs]</a> <span class="k">def</span> <span class="nf">stop</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">grace</span><span class="p">):</span>
  796. <span class="sd">&quot;&quot;&quot;Stops this Server&#39;s service of RPCs.</span>
  797. <span class="sd"> All calls to this method immediately stop service of new RPCs. When existing</span>
  798. <span class="sd"> RPCs are aborted is controlled by the grace period parameter passed to this</span>
  799. <span class="sd"> method.</span>
  800. <span class="sd"> This method may be called at any time and is idempotent. Passing a smaller</span>
  801. <span class="sd"> grace value than has been passed in a previous call will have the effect of</span>
  802. <span class="sd"> stopping the Server sooner. Passing a larger grace value than has been</span>
  803. <span class="sd"> passed in a previous call will not have the effect of stopping the server</span>
  804. <span class="sd"> later.</span>
  805. <span class="sd"> This method does not block for any significant length of time. If None is</span>
  806. <span class="sd"> passed as the grace value, existing RPCs are immediately aborted and this</span>
  807. <span class="sd"> method blocks until this Server is completely stopped.</span>
  808. <span class="sd"> Args:</span>
  809. <span class="sd"> grace: A duration of time in seconds or None. If a duration of time in</span>
  810. <span class="sd"> seconds, the time to allow existing RPCs to complete before being</span>
  811. <span class="sd"> aborted by this Server&#39;s stopping. If None, all RPCs will be aborted</span>
  812. <span class="sd"> immediately and this method will block until this Server is completely</span>
  813. <span class="sd"> stopped.</span>
  814. <span class="sd"> Returns:</span>
  815. <span class="sd"> A threading.Event that will be set when this Server has completely</span>
  816. <span class="sd"> stopped. The returned event may not be set until after the full grace</span>
  817. <span class="sd"> period (if some ongoing RPC continues for the full length of the period)</span>
  818. <span class="sd"> of it may be set much sooner (such as if this Server had no RPCs underway</span>
  819. <span class="sd"> at the time it was stopped or if all RPCs that it had underway completed</span>
  820. <span class="sd"> very early in the grace period).</span>
  821. <span class="sd"> &quot;&quot;&quot;</span>
  822. <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div>
  823. <span class="c1">################################# Functions ################################</span>
  824. <div class="viewcode-block" id="unary_unary_rpc_method_handler"><a class="viewcode-back" href="../grpc.html#grpc.unary_unary_rpc_method_handler">[docs]</a><span class="k">def</span> <span class="nf">unary_unary_rpc_method_handler</span><span class="p">(</span><span class="n">behavior</span><span class="p">,</span>
  825. <span class="n">request_deserializer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  826. <span class="n">response_serializer</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  827. <span class="sd">&quot;&quot;&quot;Creates an RpcMethodHandler for a unary-unary RPC method.</span>
  828. <span class="sd"> Args:</span>
  829. <span class="sd"> behavior: The implementation of an RPC method as a callable behavior taking</span>
  830. <span class="sd"> a single request value and returning a single response value.</span>
  831. <span class="sd"> request_deserializer: An optional request deserialization behavior.</span>
  832. <span class="sd"> response_serializer: An optional response serialization behavior.</span>
  833. <span class="sd"> Returns:</span>
  834. <span class="sd"> An RpcMethodHandler for a unary-unary RPC method constructed from the given</span>
  835. <span class="sd"> parameters.</span>
  836. <span class="sd"> &quot;&quot;&quot;</span>
  837. <span class="kn">from</span> <span class="nn">grpc</span> <span class="k">import</span> <span class="n">_utilities</span> <span class="c1"># pylint: disable=cyclic-import</span>
  838. <span class="k">return</span> <span class="n">_utilities</span><span class="o">.</span><span class="n">RpcMethodHandler</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="n">request_deserializer</span><span class="p">,</span>
  839. <span class="n">response_serializer</span><span class="p">,</span> <span class="n">behavior</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span>
  840. <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span></div>
  841. <div class="viewcode-block" id="unary_stream_rpc_method_handler"><a class="viewcode-back" href="../grpc.html#grpc.unary_stream_rpc_method_handler">[docs]</a><span class="k">def</span> <span class="nf">unary_stream_rpc_method_handler</span><span class="p">(</span><span class="n">behavior</span><span class="p">,</span>
  842. <span class="n">request_deserializer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  843. <span class="n">response_serializer</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  844. <span class="sd">&quot;&quot;&quot;Creates an RpcMethodHandler for a unary-stream RPC method.</span>
  845. <span class="sd"> Args:</span>
  846. <span class="sd"> behavior: The implementation of an RPC method as a callable behavior taking</span>
  847. <span class="sd"> a single request value and returning an iterator of response values.</span>
  848. <span class="sd"> request_deserializer: An optional request deserialization behavior.</span>
  849. <span class="sd"> response_serializer: An optional response serialization behavior.</span>
  850. <span class="sd"> Returns:</span>
  851. <span class="sd"> An RpcMethodHandler for a unary-stream RPC method constructed from the</span>
  852. <span class="sd"> given parameters.</span>
  853. <span class="sd"> &quot;&quot;&quot;</span>
  854. <span class="kn">from</span> <span class="nn">grpc</span> <span class="k">import</span> <span class="n">_utilities</span> <span class="c1"># pylint: disable=cyclic-import</span>
  855. <span class="k">return</span> <span class="n">_utilities</span><span class="o">.</span><span class="n">RpcMethodHandler</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="n">request_deserializer</span><span class="p">,</span>
  856. <span class="n">response_serializer</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">behavior</span><span class="p">,</span>
  857. <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span></div>
  858. <div class="viewcode-block" id="stream_unary_rpc_method_handler"><a class="viewcode-back" href="../grpc.html#grpc.stream_unary_rpc_method_handler">[docs]</a><span class="k">def</span> <span class="nf">stream_unary_rpc_method_handler</span><span class="p">(</span><span class="n">behavior</span><span class="p">,</span>
  859. <span class="n">request_deserializer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  860. <span class="n">response_serializer</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  861. <span class="sd">&quot;&quot;&quot;Creates an RpcMethodHandler for a stream-unary RPC method.</span>
  862. <span class="sd"> Args:</span>
  863. <span class="sd"> behavior: The implementation of an RPC method as a callable behavior taking</span>
  864. <span class="sd"> an iterator of request values and returning a single response value.</span>
  865. <span class="sd"> request_deserializer: An optional request deserialization behavior.</span>
  866. <span class="sd"> response_serializer: An optional response serialization behavior.</span>
  867. <span class="sd"> Returns:</span>
  868. <span class="sd"> An RpcMethodHandler for a stream-unary RPC method constructed from the</span>
  869. <span class="sd"> given parameters.</span>
  870. <span class="sd"> &quot;&quot;&quot;</span>
  871. <span class="kn">from</span> <span class="nn">grpc</span> <span class="k">import</span> <span class="n">_utilities</span> <span class="c1"># pylint: disable=cyclic-import</span>
  872. <span class="k">return</span> <span class="n">_utilities</span><span class="o">.</span><span class="n">RpcMethodHandler</span><span class="p">(</span><span class="kc">True</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="n">request_deserializer</span><span class="p">,</span>
  873. <span class="n">response_serializer</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span>
  874. <span class="n">behavior</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span></div>
  875. <div class="viewcode-block" id="stream_stream_rpc_method_handler"><a class="viewcode-back" href="../grpc.html#grpc.stream_stream_rpc_method_handler">[docs]</a><span class="k">def</span> <span class="nf">stream_stream_rpc_method_handler</span><span class="p">(</span><span class="n">behavior</span><span class="p">,</span>
  876. <span class="n">request_deserializer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  877. <span class="n">response_serializer</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  878. <span class="sd">&quot;&quot;&quot;Creates an RpcMethodHandler for a stream-stream RPC method.</span>
  879. <span class="sd"> Args:</span>
  880. <span class="sd"> behavior: The implementation of an RPC method as a callable behavior taking</span>
  881. <span class="sd"> an iterator of request values and returning an iterator of response</span>
  882. <span class="sd"> values.</span>
  883. <span class="sd"> request_deserializer: An optional request deserialization behavior.</span>
  884. <span class="sd"> response_serializer: An optional response serialization behavior.</span>
  885. <span class="sd"> Returns:</span>
  886. <span class="sd"> An RpcMethodHandler for a stream-stream RPC method constructed from the</span>
  887. <span class="sd"> given parameters.</span>
  888. <span class="sd"> &quot;&quot;&quot;</span>
  889. <span class="kn">from</span> <span class="nn">grpc</span> <span class="k">import</span> <span class="n">_utilities</span> <span class="c1"># pylint: disable=cyclic-import</span>
  890. <span class="k">return</span> <span class="n">_utilities</span><span class="o">.</span><span class="n">RpcMethodHandler</span><span class="p">(</span><span class="kc">True</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="n">request_deserializer</span><span class="p">,</span>
  891. <span class="n">response_serializer</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span>
  892. <span class="n">behavior</span><span class="p">)</span></div>
  893. <div class="viewcode-block" id="method_handlers_generic_handler"><a class="viewcode-back" href="../grpc.html#grpc.method_handlers_generic_handler">[docs]</a><span class="k">def</span> <span class="nf">method_handlers_generic_handler</span><span class="p">(</span><span class="n">service</span><span class="p">,</span> <span class="n">method_handlers</span><span class="p">):</span>
  894. <span class="sd">&quot;&quot;&quot;Creates a grpc.GenericRpcHandler from RpcMethodHandlers.</span>
  895. <span class="sd"> Args:</span>
  896. <span class="sd"> service: A service name to be used for the given method handlers.</span>
  897. <span class="sd"> method_handlers: A dictionary from method name to RpcMethodHandler</span>
  898. <span class="sd"> implementing the named method.</span>
  899. <span class="sd"> Returns:</span>
  900. <span class="sd"> A GenericRpcHandler constructed from the given parameters.</span>
  901. <span class="sd"> &quot;&quot;&quot;</span>
  902. <span class="kn">from</span> <span class="nn">grpc</span> <span class="k">import</span> <span class="n">_utilities</span> <span class="c1"># pylint: disable=cyclic-import</span>
  903. <span class="k">return</span> <span class="n">_utilities</span><span class="o">.</span><span class="n">DictionaryGenericHandler</span><span class="p">(</span><span class="n">service</span><span class="p">,</span> <span class="n">method_handlers</span><span class="p">)</span></div>
  904. <div class="viewcode-block" id="ssl_channel_credentials"><a class="viewcode-back" href="../grpc.html#grpc.ssl_channel_credentials">[docs]</a><span class="k">def</span> <span class="nf">ssl_channel_credentials</span><span class="p">(</span><span class="n">root_certificates</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  905. <span class="n">private_key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  906. <span class="n">certificate_chain</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  907. <span class="sd">&quot;&quot;&quot;Creates a ChannelCredentials for use with an SSL-enabled Channel.</span>
  908. <span class="sd"> Args:</span>
  909. <span class="sd"> root_certificates: The PEM-encoded root certificates or unset to ask for</span>
  910. <span class="sd"> them to be retrieved from a default location.</span>
  911. <span class="sd"> private_key: The PEM-encoded private key to use or unset if no private key</span>
  912. <span class="sd"> should be used.</span>
  913. <span class="sd"> certificate_chain: The PEM-encoded certificate chain to use or unset if no</span>
  914. <span class="sd"> certificate chain should be used.</span>
  915. <span class="sd"> Returns:</span>
  916. <span class="sd"> A ChannelCredentials for use with an SSL-enabled Channel.</span>
  917. <span class="sd"> &quot;&quot;&quot;</span>
  918. <span class="k">if</span> <span class="n">private_key</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">certificate_chain</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
  919. <span class="n">pair</span> <span class="o">=</span> <span class="n">_cygrpc</span><span class="o">.</span><span class="n">SslPemKeyCertPair</span><span class="p">(</span><span class="n">private_key</span><span class="p">,</span> <span class="n">certificate_chain</span><span class="p">)</span>
  920. <span class="k">else</span><span class="p">:</span>
  921. <span class="n">pair</span> <span class="o">=</span> <span class="kc">None</span>
  922. <span class="k">return</span> <span class="n">ChannelCredentials</span><span class="p">(</span>
  923. <span class="n">_cygrpc</span><span class="o">.</span><span class="n">channel_credentials_ssl</span><span class="p">(</span><span class="n">root_certificates</span><span class="p">,</span> <span class="n">pair</span><span class="p">))</span></div>
  924. <div class="viewcode-block" id="metadata_call_credentials"><a class="viewcode-back" href="../grpc.html#grpc.metadata_call_credentials">[docs]</a><span class="k">def</span> <span class="nf">metadata_call_credentials</span><span class="p">(</span><span class="n">metadata_plugin</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  925. <span class="sd">&quot;&quot;&quot;Construct CallCredentials from an AuthMetadataPlugin.</span>
  926. <span class="sd"> Args:</span>
  927. <span class="sd"> metadata_plugin: An AuthMetadataPlugin to use as the authentication behavior</span>
  928. <span class="sd"> in the created CallCredentials.</span>
  929. <span class="sd"> name: A name for the plugin.</span>
  930. <span class="sd"> Returns:</span>
  931. <span class="sd"> A CallCredentials.</span>
  932. <span class="sd"> &quot;&quot;&quot;</span>
  933. <span class="kn">from</span> <span class="nn">grpc</span> <span class="k">import</span> <span class="n">_plugin_wrapping</span> <span class="c1"># pylint: disable=cyclic-import</span>
  934. <span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
  935. <span class="k">try</span><span class="p">:</span>
  936. <span class="n">effective_name</span> <span class="o">=</span> <span class="n">metadata_plugin</span><span class="o">.</span><span class="vm">__name__</span>
  937. <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
  938. <span class="n">effective_name</span> <span class="o">=</span> <span class="n">metadata_plugin</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span>
  939. <span class="k">else</span><span class="p">:</span>
  940. <span class="n">effective_name</span> <span class="o">=</span> <span class="n">name</span>
  941. <span class="k">return</span> <span class="n">CallCredentials</span><span class="p">(</span>
  942. <span class="n">_plugin_wrapping</span><span class="o">.</span><span class="n">call_credentials_metadata_plugin</span><span class="p">(</span><span class="n">metadata_plugin</span><span class="p">,</span>
  943. <span class="n">effective_name</span><span class="p">))</span></div>
  944. <div class="viewcode-block" id="access_token_call_credentials"><a class="viewcode-back" href="../grpc.html#grpc.access_token_call_credentials">[docs]</a><span class="k">def</span> <span class="nf">access_token_call_credentials</span><span class="p">(</span><span class="n">access_token</span><span class="p">):</span>
  945. <span class="sd">&quot;&quot;&quot;Construct CallCredentials from an access token.</span>
  946. <span class="sd"> Args:</span>
  947. <span class="sd"> access_token: A string to place directly in the http request</span>
  948. <span class="sd"> authorization header, ie &quot;authorization: Bearer &lt;access_token&gt;&quot;.</span>
  949. <span class="sd"> Returns:</span>
  950. <span class="sd"> A CallCredentials.</span>
  951. <span class="sd"> &quot;&quot;&quot;</span>
  952. <span class="kn">from</span> <span class="nn">grpc</span> <span class="k">import</span> <span class="n">_auth</span> <span class="c1"># pylint: disable=cyclic-import</span>
  953. <span class="k">return</span> <span class="n">metadata_call_credentials</span><span class="p">(</span>
  954. <span class="n">_auth</span><span class="o">.</span><span class="n">AccessTokenCallCredentials</span><span class="p">(</span><span class="n">access_token</span><span class="p">))</span></div>
  955. <div class="viewcode-block" id="composite_call_credentials"><a class="viewcode-back" href="../grpc.html#grpc.composite_call_credentials">[docs]</a><span class="k">def</span> <span class="nf">composite_call_credentials</span><span class="p">(</span><span class="o">*</span><span class="n">call_credentials</span><span class="p">):</span>
  956. <span class="sd">&quot;&quot;&quot;Compose multiple CallCredentials to make a new CallCredentials.</span>
  957. <span class="sd"> Args:</span>
  958. <span class="sd"> *call_credentials: At least two CallCredentials objects.</span>
  959. <span class="sd"> Returns:</span>
  960. <span class="sd"> A CallCredentials object composed of the given CallCredentials objects.</span>
  961. <span class="sd"> &quot;&quot;&quot;</span>
  962. <span class="kn">from</span> <span class="nn">grpc</span> <span class="k">import</span> <span class="n">_credential_composition</span> <span class="c1"># pylint: disable=cyclic-import</span>
  963. <span class="n">cygrpc_call_credentials</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span>
  964. <span class="n">single_call_credentials</span><span class="o">.</span><span class="n">_credentials</span>
  965. <span class="k">for</span> <span class="n">single_call_credentials</span> <span class="ow">in</span> <span class="n">call_credentials</span><span class="p">)</span>
  966. <span class="k">return</span> <span class="n">CallCredentials</span><span class="p">(</span>
  967. <span class="n">_credential_composition</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">cygrpc_call_credentials</span><span class="p">))</span></div>
  968. <div class="viewcode-block" id="composite_channel_credentials"><a class="viewcode-back" href="../grpc.html#grpc.composite_channel_credentials">[docs]</a><span class="k">def</span> <span class="nf">composite_channel_credentials</span><span class="p">(</span><span class="n">channel_credentials</span><span class="p">,</span> <span class="o">*</span><span class="n">call_credentials</span><span class="p">):</span>
  969. <span class="sd">&quot;&quot;&quot;Compose a ChannelCredentials and one or more CallCredentials objects.</span>
  970. <span class="sd"> Args:</span>
  971. <span class="sd"> channel_credentials: A ChannelCredentials.</span>
  972. <span class="sd"> *call_credentials: One or more CallCredentials objects.</span>
  973. <span class="sd"> Returns:</span>
  974. <span class="sd"> A ChannelCredentials composed of the given ChannelCredentials and</span>
  975. <span class="sd"> CallCredentials objects.</span>
  976. <span class="sd"> &quot;&quot;&quot;</span>
  977. <span class="kn">from</span> <span class="nn">grpc</span> <span class="k">import</span> <span class="n">_credential_composition</span> <span class="c1"># pylint: disable=cyclic-import</span>
  978. <span class="n">cygrpc_call_credentials</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span>
  979. <span class="n">single_call_credentials</span><span class="o">.</span><span class="n">_credentials</span>
  980. <span class="k">for</span> <span class="n">single_call_credentials</span> <span class="ow">in</span> <span class="n">call_credentials</span><span class="p">)</span>
  981. <span class="k">return</span> <span class="n">ChannelCredentials</span><span class="p">(</span>
  982. <span class="n">_credential_composition</span><span class="o">.</span><span class="n">channel</span><span class="p">(</span><span class="n">channel_credentials</span><span class="o">.</span><span class="n">_credentials</span><span class="p">,</span>
  983. <span class="n">cygrpc_call_credentials</span><span class="p">))</span></div>
  984. <div class="viewcode-block" id="ssl_server_credentials"><a class="viewcode-back" href="../grpc.html#grpc.ssl_server_credentials">[docs]</a><span class="k">def</span> <span class="nf">ssl_server_credentials</span><span class="p">(</span><span class="n">private_key_certificate_chain_pairs</span><span class="p">,</span>
  985. <span class="n">root_certificates</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  986. <span class="n">require_client_auth</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
  987. <span class="sd">&quot;&quot;&quot;Creates a ServerCredentials for use with an SSL-enabled Server.</span>
  988. <span class="sd"> Args:</span>
  989. <span class="sd"> private_key_certificate_chain_pairs: A nonempty sequence each element of</span>
  990. <span class="sd"> which is a pair the first element of which is a PEM-encoded private key</span>
  991. <span class="sd"> and the second element of which is the corresponding PEM-encoded</span>
  992. <span class="sd"> certificate chain.</span>
  993. <span class="sd"> root_certificates: PEM-encoded client root certificates to be used for</span>
  994. <span class="sd"> verifying authenticated clients. If omitted, require_client_auth must also</span>
  995. <span class="sd"> be omitted or be False.</span>
  996. <span class="sd"> require_client_auth: A boolean indicating whether or not to require clients</span>
  997. <span class="sd"> to be authenticated. May only be True if root_certificates is not None.</span>
  998. <span class="sd"> Returns:</span>
  999. <span class="sd"> A ServerCredentials for use with an SSL-enabled Server.</span>
  1000. <span class="sd"> &quot;&quot;&quot;</span>
  1001. <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">private_key_certificate_chain_pairs</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
  1002. <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
  1003. <span class="s1">&#39;At least one private key-certificate chain pair is required!&#39;</span><span class="p">)</span>
  1004. <span class="k">elif</span> <span class="n">require_client_auth</span> <span class="ow">and</span> <span class="n">root_certificates</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
  1005. <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
  1006. <span class="s1">&#39;Illegal to require client auth without providing root certificates!&#39;</span>
  1007. <span class="p">)</span>
  1008. <span class="k">else</span><span class="p">:</span>
  1009. <span class="k">return</span> <span class="n">ServerCredentials</span><span class="p">(</span>
  1010. <span class="n">_cygrpc</span><span class="o">.</span><span class="n">server_credentials_ssl</span><span class="p">(</span><span class="n">root_certificates</span><span class="p">,</span> <span class="p">[</span>
  1011. <span class="n">_cygrpc</span><span class="o">.</span><span class="n">SslPemKeyCertPair</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">pem</span><span class="p">)</span>
  1012. <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">pem</span> <span class="ow">in</span> <span class="n">private_key_certificate_chain_pairs</span>
  1013. <span class="p">],</span> <span class="n">require_client_auth</span><span class="p">))</span></div>
  1014. <div class="viewcode-block" id="channel_ready_future"><a class="viewcode-back" href="../grpc.html#grpc.channel_ready_future">[docs]</a><span class="k">def</span> <span class="nf">channel_ready_future</span><span class="p">(</span><span class="n">channel</span><span class="p">):</span>
  1015. <span class="sd">&quot;&quot;&quot;Creates a Future tracking when a Channel is ready.</span>
  1016. <span class="sd"> Cancelling the returned Future does not tell the given Channel to abandon</span>
  1017. <span class="sd"> attempts it may have been making to connect; cancelling merely deactivates the</span>
  1018. <span class="sd"> returned Future&#39;s subscription to the given Channel&#39;s connectivity.</span>
  1019. <span class="sd"> Args:</span>
  1020. <span class="sd"> channel: A Channel.</span>
  1021. <span class="sd"> Returns:</span>
  1022. <span class="sd"> A Future that matures when the given Channel has connectivity</span>
  1023. <span class="sd"> ChannelConnectivity.READY.</span>
  1024. <span class="sd"> &quot;&quot;&quot;</span>
  1025. <span class="kn">from</span> <span class="nn">grpc</span> <span class="k">import</span> <span class="n">_utilities</span> <span class="c1"># pylint: disable=cyclic-import</span>
  1026. <span class="k">return</span> <span class="n">_utilities</span><span class="o">.</span><span class="n">channel_ready_future</span><span class="p">(</span><span class="n">channel</span><span class="p">)</span></div>
  1027. <div class="viewcode-block" id="insecure_channel"><a class="viewcode-back" href="../grpc.html#grpc.insecure_channel">[docs]</a><span class="k">def</span> <span class="nf">insecure_channel</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  1028. <span class="sd">&quot;&quot;&quot;Creates an insecure Channel to a server.</span>
  1029. <span class="sd"> Args:</span>
  1030. <span class="sd"> target: The target to which to connect.</span>
  1031. <span class="sd"> options: A sequence of string-value pairs according to which to configure</span>
  1032. <span class="sd"> the created channel.</span>
  1033. <span class="sd"> Returns:</span>
  1034. <span class="sd"> A Channel to the target through which RPCs may be conducted.</span>
  1035. <span class="sd"> &quot;&quot;&quot;</span>
  1036. <span class="kn">from</span> <span class="nn">grpc</span> <span class="k">import</span> <span class="n">_channel</span> <span class="c1"># pylint: disable=cyclic-import</span>
  1037. <span class="k">return</span> <span class="n">_channel</span><span class="o">.</span><span class="n">Channel</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="p">()</span> <span class="k">if</span> <span class="n">options</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">options</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span></div>
  1038. <div class="viewcode-block" id="secure_channel"><a class="viewcode-back" href="../grpc.html#grpc.secure_channel">[docs]</a><span class="k">def</span> <span class="nf">secure_channel</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">credentials</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  1039. <span class="sd">&quot;&quot;&quot;Creates a secure Channel to a server.</span>
  1040. <span class="sd"> Args:</span>
  1041. <span class="sd"> target: The target to which to connect.</span>
  1042. <span class="sd"> credentials: A ChannelCredentials instance.</span>
  1043. <span class="sd"> options: A sequence of string-value pairs according to which to configure</span>
  1044. <span class="sd"> the created channel.</span>
  1045. <span class="sd"> Returns:</span>
  1046. <span class="sd"> A Channel to the target through which RPCs may be conducted.</span>
  1047. <span class="sd"> &quot;&quot;&quot;</span>
  1048. <span class="kn">from</span> <span class="nn">grpc</span> <span class="k">import</span> <span class="n">_channel</span> <span class="c1"># pylint: disable=cyclic-import</span>
  1049. <span class="k">return</span> <span class="n">_channel</span><span class="o">.</span><span class="n">Channel</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="p">()</span> <span class="k">if</span> <span class="n">options</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">options</span><span class="p">,</span>
  1050. <span class="n">credentials</span><span class="o">.</span><span class="n">_credentials</span><span class="p">)</span></div>
  1051. <div class="viewcode-block" id="server"><a class="viewcode-back" href="../grpc.html#grpc.server">[docs]</a><span class="k">def</span> <span class="nf">server</span><span class="p">(</span><span class="n">thread_pool</span><span class="p">,</span>
  1052. <span class="n">handlers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  1053. <span class="n">options</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
  1054. <span class="n">maximum_concurrent_rpcs</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
  1055. <span class="sd">&quot;&quot;&quot;Creates a Server with which RPCs can be serviced.</span>
  1056. <span class="sd"> Args:</span>
  1057. <span class="sd"> thread_pool: A futures.ThreadPoolExecutor to be used by the returned Server</span>
  1058. <span class="sd"> to service RPCs.</span>
  1059. <span class="sd"> handlers: An optional sequence of GenericRpcHandlers to be used to service</span>
  1060. <span class="sd"> RPCs after the returned Server is started. These handlers need not be the</span>
  1061. <span class="sd"> only handlers the server will use to service RPCs; other handlers may</span>
  1062. <span class="sd"> later be added by calling add_generic_rpc_handlers any time before the</span>
  1063. <span class="sd"> returned Server is started.</span>
  1064. <span class="sd"> options: A sequence of string-value pairs according to which to configure</span>
  1065. <span class="sd"> the created server.</span>
  1066. <span class="sd"> maximum_concurrent_rpcs: The maximum number of concurrent RPCs this server</span>
  1067. <span class="sd"> will service before returning status RESOURCE_EXHAUSTED, or None to</span>
  1068. <span class="sd"> indicate no limit.</span>
  1069. <span class="sd"> Returns:</span>
  1070. <span class="sd"> A Server with which RPCs can be serviced.</span>
  1071. <span class="sd"> &quot;&quot;&quot;</span>
  1072. <span class="kn">from</span> <span class="nn">grpc</span> <span class="k">import</span> <span class="n">_server</span> <span class="c1"># pylint: disable=cyclic-import</span>
  1073. <span class="k">return</span> <span class="n">_server</span><span class="o">.</span><span class="n">Server</span><span class="p">(</span><span class="n">thread_pool</span><span class="p">,</span> <span class="p">()</span> <span class="k">if</span> <span class="n">handlers</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">handlers</span><span class="p">,</span> <span class="p">()</span>
  1074. <span class="k">if</span> <span class="n">options</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">options</span><span class="p">,</span>
  1075. <span class="n">maximum_concurrent_rpcs</span><span class="p">)</span></div>
  1076. <span class="c1">################################### __all__ #################################</span>
  1077. <span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;FutureTimeoutError&#39;</span><span class="p">,</span> <span class="s1">&#39;FutureCancelledError&#39;</span><span class="p">,</span> <span class="s1">&#39;Future&#39;</span><span class="p">,</span>
  1078. <span class="s1">&#39;ChannelConnectivity&#39;</span><span class="p">,</span> <span class="s1">&#39;StatusCode&#39;</span><span class="p">,</span> <span class="s1">&#39;RpcError&#39;</span><span class="p">,</span> <span class="s1">&#39;RpcContext&#39;</span><span class="p">,</span>
  1079. <span class="s1">&#39;Call&#39;</span><span class="p">,</span> <span class="s1">&#39;ChannelCredentials&#39;</span><span class="p">,</span> <span class="s1">&#39;CallCredentials&#39;</span><span class="p">,</span>
  1080. <span class="s1">&#39;AuthMetadataContext&#39;</span><span class="p">,</span> <span class="s1">&#39;AuthMetadataPluginCallback&#39;</span><span class="p">,</span>
  1081. <span class="s1">&#39;AuthMetadataPlugin&#39;</span><span class="p">,</span> <span class="s1">&#39;ServerCredentials&#39;</span><span class="p">,</span> <span class="s1">&#39;UnaryUnaryMultiCallable&#39;</span><span class="p">,</span>
  1082. <span class="s1">&#39;UnaryStreamMultiCallable&#39;</span><span class="p">,</span> <span class="s1">&#39;StreamUnaryMultiCallable&#39;</span><span class="p">,</span>
  1083. <span class="s1">&#39;StreamStreamMultiCallable&#39;</span><span class="p">,</span> <span class="s1">&#39;Channel&#39;</span><span class="p">,</span> <span class="s1">&#39;ServicerContext&#39;</span><span class="p">,</span>
  1084. <span class="s1">&#39;RpcMethodHandler&#39;</span><span class="p">,</span> <span class="s1">&#39;HandlerCallDetails&#39;</span><span class="p">,</span> <span class="s1">&#39;GenericRpcHandler&#39;</span><span class="p">,</span>
  1085. <span class="s1">&#39;ServiceRpcHandler&#39;</span><span class="p">,</span> <span class="s1">&#39;Server&#39;</span><span class="p">,</span> <span class="s1">&#39;unary_unary_rpc_method_handler&#39;</span><span class="p">,</span>
  1086. <span class="s1">&#39;unary_stream_rpc_method_handler&#39;</span><span class="p">,</span> <span class="s1">&#39;stream_unary_rpc_method_handler&#39;</span><span class="p">,</span>
  1087. <span class="s1">&#39;stream_stream_rpc_method_handler&#39;</span><span class="p">,</span>
  1088. <span class="s1">&#39;method_handlers_generic_handler&#39;</span><span class="p">,</span> <span class="s1">&#39;ssl_channel_credentials&#39;</span><span class="p">,</span>
  1089. <span class="s1">&#39;metadata_call_credentials&#39;</span><span class="p">,</span> <span class="s1">&#39;access_token_call_credentials&#39;</span><span class="p">,</span>
  1090. <span class="s1">&#39;composite_call_credentials&#39;</span><span class="p">,</span> <span class="s1">&#39;composite_channel_credentials&#39;</span><span class="p">,</span>
  1091. <span class="s1">&#39;ssl_server_credentials&#39;</span><span class="p">,</span> <span class="s1">&#39;channel_ready_future&#39;</span><span class="p">,</span> <span class="s1">&#39;insecure_channel&#39;</span><span class="p">,</span>
  1092. <span class="s1">&#39;secure_channel&#39;</span><span class="p">,</span> <span class="s1">&#39;server&#39;</span><span class="p">,)</span>
  1093. <span class="c1">############################### Extension Shims ################################</span>
  1094. <span class="c1"># Here to maintain backwards compatibility; avoid using these in new code!</span>
  1095. <span class="k">try</span><span class="p">:</span>
  1096. <span class="kn">import</span> <span class="nn">grpc_tools</span>
  1097. <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s1">&#39;grpc.tools&#39;</span><span class="p">:</span> <span class="n">grpc_tools</span><span class="p">})</span>
  1098. <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
  1099. <span class="k">pass</span>
  1100. <span class="k">try</span><span class="p">:</span>
  1101. <span class="kn">import</span> <span class="nn">grpc_health</span>
  1102. <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s1">&#39;grpc.health&#39;</span><span class="p">:</span> <span class="n">grpc_health</span><span class="p">})</span>
  1103. <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
  1104. <span class="k">pass</span>
  1105. <span class="k">try</span><span class="p">:</span>
  1106. <span class="kn">import</span> <span class="nn">grpc_reflection</span>
  1107. <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s1">&#39;grpc.reflection&#39;</span><span class="p">:</span> <span class="n">grpc_reflection</span><span class="p">})</span>
  1108. <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
  1109. <span class="k">pass</span>
  1110. </pre></div>
  1111. </div>
  1112. <div class="articleComments">
  1113. </div>
  1114. </div>
  1115. <footer>
  1116. <hr/>
  1117. <div role="contentinfo">
  1118. <p>
  1119. &copy; Copyright 2016, The gRPC Authors.
  1120. </p>
  1121. </div>
  1122. Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
  1123. </footer>
  1124. </div>
  1125. </div>
  1126. </section>
  1127. </div>
  1128. <script type="text/javascript">
  1129. var DOCUMENTATION_OPTIONS = {
  1130. URL_ROOT:'../',
  1131. VERSION:'1.2.0',
  1132. COLLAPSE_INDEX:false,
  1133. FILE_SUFFIX:'.html',
  1134. HAS_SOURCE: true,
  1135. SOURCELINK_SUFFIX: '.txt'
  1136. };
  1137. </script>
  1138. <script type="text/javascript" src="../_static/jquery.js"></script>
  1139. <script type="text/javascript" src="../_static/underscore.js"></script>
  1140. <script type="text/javascript" src="../_static/doctools.js"></script>
  1141. <script type="text/javascript" src="../_static/js/theme.js"></script>
  1142. <script type="text/javascript">
  1143. jQuery(function () {
  1144. SphinxRtdTheme.StickyNav.enable();
  1145. });
  1146. </script>
  1147. </body>
  1148. </html>