gooderp18绿色标准版
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

900 lines
67KB

  1. <!DOCTYPE html>
  2. <html lang="en" data-content_root="../">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
  6. <meta property="og:title" content="Low-level API Index" />
  7. <meta property="og:type" content="website" />
  8. <meta property="og:url" content="https://docs.python.org/3/library/asyncio-llapi-index.html" />
  9. <meta property="og:site_name" content="Python documentation" />
  10. <meta property="og:description" content="This page lists all low-level asyncio APIs. Obtaining the Event Loop:,, asyncio.get_running_loop(), The preferred function to get the running event loop.,, asyncio.get_event_loop(), Get an event lo..." />
  11. <meta property="og:image" content="https://docs.python.org/3/_static/og-image.png" />
  12. <meta property="og:image:alt" content="Python documentation" />
  13. <meta name="description" content="This page lists all low-level asyncio APIs. Obtaining the Event Loop:,, asyncio.get_running_loop(), The preferred function to get the running event loop.,, asyncio.get_event_loop(), Get an event lo..." />
  14. <meta property="og:image:width" content="200" />
  15. <meta property="og:image:height" content="200" />
  16. <meta name="theme-color" content="#3776ab" />
  17. <title>Low-level API Index &#8212; Python 3.12.3 documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
  18. <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" />
  19. <link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?v=bb723527" />
  20. <link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="../_static/pygments_dark.css?v=b20cc3f5" />
  21. <script src="../_static/documentation_options.js?v=2c828074"></script>
  22. <script src="../_static/doctools.js?v=888ff710"></script>
  23. <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
  24. <script src="../_static/sidebar.js"></script>
  25. <link rel="search" type="application/opensearchdescription+xml"
  26. title="Search within Python 3.12.3 documentation"
  27. href="../_static/opensearch.xml"/>
  28. <link rel="author" title="About these documents" href="../about.html" />
  29. <link rel="index" title="Index" href="../genindex.html" />
  30. <link rel="search" title="Search" href="../search.html" />
  31. <link rel="copyright" title="Copyright" href="../copyright.html" />
  32. <link rel="next" title="Developing with asyncio" href="asyncio-dev.html" />
  33. <link rel="prev" title="High-level API Index" href="asyncio-api-index.html" />
  34. <link rel="canonical" href="https://docs.python.org/3/library/asyncio-llapi-index.html" />
  35. <style>
  36. @media only screen {
  37. table.full-width-table {
  38. width: 100%;
  39. }
  40. }
  41. </style>
  42. <link rel="stylesheet" href="../_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
  43. <link rel="shortcut icon" type="image/png" href="../_static/py.svg" />
  44. <script type="text/javascript" src="../_static/copybutton.js"></script>
  45. <script type="text/javascript" src="../_static/menu.js"></script>
  46. <script type="text/javascript" src="../_static/search-focus.js"></script>
  47. <script type="text/javascript" src="../_static/themetoggle.js"></script>
  48. </head>
  49. <body>
  50. <div class="mobile-nav">
  51. <input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
  52. aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
  53. <nav class="nav-content" role="navigation">
  54. <label for="menuToggler" class="toggler__label">
  55. <span></span>
  56. </label>
  57. <span class="nav-items-wrapper">
  58. <a href="https://www.python.org/" class="nav-logo">
  59. <img src="../_static/py.svg" alt="Python logo"/>
  60. </a>
  61. <span class="version_switcher_placeholder"></span>
  62. <form role="search" class="search" action="../search.html" method="get">
  63. <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
  64. <path fill-rule="nonzero" fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
  65. </svg>
  66. <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" />
  67. <input type="submit" value="Go"/>
  68. </form>
  69. </span>
  70. </nav>
  71. <div class="menu-wrapper">
  72. <nav class="menu" role="navigation" aria-label="main navigation">
  73. <div class="language_switcher_placeholder"></div>
  74. <label class="theme-selector-label">
  75. Theme
  76. <select class="theme-selector" oninput="activateTheme(this.value)">
  77. <option value="auto" selected>Auto</option>
  78. <option value="light">Light</option>
  79. <option value="dark">Dark</option>
  80. </select>
  81. </label>
  82. <div>
  83. <h3><a href="../contents.html">Table of Contents</a></h3>
  84. <ul>
  85. <li><a class="reference internal" href="#">Low-level API Index</a><ul>
  86. <li><a class="reference internal" href="#obtaining-the-event-loop">Obtaining the Event Loop</a></li>
  87. <li><a class="reference internal" href="#event-loop-methods">Event Loop Methods</a></li>
  88. <li><a class="reference internal" href="#transports">Transports</a></li>
  89. <li><a class="reference internal" href="#protocols">Protocols</a></li>
  90. <li><a class="reference internal" href="#event-loop-policies">Event Loop Policies</a></li>
  91. </ul>
  92. </li>
  93. </ul>
  94. </div>
  95. <div>
  96. <h4>Previous topic</h4>
  97. <p class="topless"><a href="asyncio-api-index.html"
  98. title="previous chapter">High-level API Index</a></p>
  99. </div>
  100. <div>
  101. <h4>Next topic</h4>
  102. <p class="topless"><a href="asyncio-dev.html"
  103. title="next chapter">Developing with asyncio</a></p>
  104. </div>
  105. <div role="note" aria-label="source link">
  106. <h3>This Page</h3>
  107. <ul class="this-page-menu">
  108. <li><a href="../bugs.html">Report a Bug</a></li>
  109. <li>
  110. <a href="https://github.com/python/cpython/blob/main/Doc/library/asyncio-llapi-index.rst"
  111. rel="nofollow">Show Source
  112. </a>
  113. </li>
  114. </ul>
  115. </div>
  116. </nav>
  117. </div>
  118. </div>
  119. <div class="related" role="navigation" aria-label="related navigation">
  120. <h3>Navigation</h3>
  121. <ul>
  122. <li class="right" style="margin-right: 10px">
  123. <a href="../genindex.html" title="General Index"
  124. accesskey="I">index</a></li>
  125. <li class="right" >
  126. <a href="../py-modindex.html" title="Python Module Index"
  127. >modules</a> |</li>
  128. <li class="right" >
  129. <a href="asyncio-dev.html" title="Developing with asyncio"
  130. accesskey="N">next</a> |</li>
  131. <li class="right" >
  132. <a href="asyncio-api-index.html" title="High-level API Index"
  133. accesskey="P">previous</a> |</li>
  134. <li><img src="../_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"/></li>
  135. <li><a href="https://www.python.org/">Python</a> &#187;</li>
  136. <li class="switchers">
  137. <div class="language_switcher_placeholder"></div>
  138. <div class="version_switcher_placeholder"></div>
  139. </li>
  140. <li>
  141. </li>
  142. <li id="cpython-language-and-version">
  143. <a href="../index.html">3.12.3 Documentation</a> &#187;
  144. </li>
  145. <li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> &#187;</li>
  146. <li class="nav-item nav-item-2"><a href="ipc.html" >Networking and Interprocess Communication</a> &#187;</li>
  147. <li class="nav-item nav-item-3"><a href="asyncio.html" accesskey="U"><code class="xref py py-mod docutils literal notranslate"><span class="pre">asyncio</span></code> — Asynchronous I/O</a> &#187;</li>
  148. <li class="nav-item nav-item-this"><a href="">Low-level API Index</a></li>
  149. <li class="right">
  150. <div class="inline-search" role="search">
  151. <form class="inline-search" action="../search.html" method="get">
  152. <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box" />
  153. <input type="submit" value="Go" />
  154. </form>
  155. </div>
  156. |
  157. </li>
  158. <li class="right">
  159. <label class="theme-selector-label">
  160. Theme
  161. <select class="theme-selector" oninput="activateTheme(this.value)">
  162. <option value="auto" selected>Auto</option>
  163. <option value="light">Light</option>
  164. <option value="dark">Dark</option>
  165. </select>
  166. </label> |</li>
  167. </ul>
  168. </div>
  169. <div class="document">
  170. <div class="documentwrapper">
  171. <div class="bodywrapper">
  172. <div class="body" role="main">
  173. <section id="low-level-api-index">
  174. <h1>Low-level API Index<a class="headerlink" href="#low-level-api-index" title="Link to this heading">¶</a></h1>
  175. <p>This page lists all low-level asyncio APIs.</p>
  176. <section id="obtaining-the-event-loop">
  177. <h2>Obtaining the Event Loop<a class="headerlink" href="#obtaining-the-event-loop" title="Link to this heading">¶</a></h2>
  178. <table class="full-width-table docutils align-default">
  179. <colgroup>
  180. <col style="width: 50.0%" />
  181. <col style="width: 50.0%" />
  182. </colgroup>
  183. <tbody>
  184. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.get_running_loop" title="asyncio.get_running_loop"><code class="xref py py-func docutils literal notranslate"><span class="pre">asyncio.get_running_loop()</span></code></a></p></td>
  185. <td><p>The <strong>preferred</strong> function to get the running event loop.</p></td>
  186. </tr>
  187. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.get_event_loop" title="asyncio.get_event_loop"><code class="xref py py-func docutils literal notranslate"><span class="pre">asyncio.get_event_loop()</span></code></a></p></td>
  188. <td><p>Get an event loop instance (running or current via the current policy).</p></td>
  189. </tr>
  190. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.set_event_loop" title="asyncio.set_event_loop"><code class="xref py py-func docutils literal notranslate"><span class="pre">asyncio.set_event_loop()</span></code></a></p></td>
  191. <td><p>Set the event loop as current via the current policy.</p></td>
  192. </tr>
  193. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.new_event_loop" title="asyncio.new_event_loop"><code class="xref py py-func docutils literal notranslate"><span class="pre">asyncio.new_event_loop()</span></code></a></p></td>
  194. <td><p>Create a new event loop.</p></td>
  195. </tr>
  196. </tbody>
  197. </table>
  198. <p class="rubric">Examples</p>
  199. <ul class="simple">
  200. <li><p><a class="reference internal" href="asyncio-future.html#asyncio-example-future"><span class="std std-ref">Using asyncio.get_running_loop()</span></a>.</p></li>
  201. </ul>
  202. </section>
  203. <section id="event-loop-methods">
  204. <h2>Event Loop Methods<a class="headerlink" href="#event-loop-methods" title="Link to this heading">¶</a></h2>
  205. <p>See also the main documentation section about the
  206. <a class="reference internal" href="asyncio-eventloop.html#asyncio-event-loop-methods"><span class="std std-ref">Event Loop Methods</span></a>.</p>
  207. <p class="rubric">Lifecycle</p>
  208. <table class="full-width-table docutils align-default">
  209. <colgroup>
  210. <col style="width: 50.0%" />
  211. <col style="width: 50.0%" />
  212. </colgroup>
  213. <tbody>
  214. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.run_until_complete" title="asyncio.loop.run_until_complete"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.run_until_complete()</span></code></a></p></td>
  215. <td><p>Run a Future/Task/awaitable until complete.</p></td>
  216. </tr>
  217. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.run_forever" title="asyncio.loop.run_forever"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.run_forever()</span></code></a></p></td>
  218. <td><p>Run the event loop forever.</p></td>
  219. </tr>
  220. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.stop" title="asyncio.loop.stop"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.stop()</span></code></a></p></td>
  221. <td><p>Stop the event loop.</p></td>
  222. </tr>
  223. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.close" title="asyncio.loop.close"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.close()</span></code></a></p></td>
  224. <td><p>Close the event loop.</p></td>
  225. </tr>
  226. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.is_running" title="asyncio.loop.is_running"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.is_running()</span></code></a></p></td>
  227. <td><p>Return <code class="docutils literal notranslate"><span class="pre">True</span></code> if the event loop is running.</p></td>
  228. </tr>
  229. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.is_closed" title="asyncio.loop.is_closed"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.is_closed()</span></code></a></p></td>
  230. <td><p>Return <code class="docutils literal notranslate"><span class="pre">True</span></code> if the event loop is closed.</p></td>
  231. </tr>
  232. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.shutdown_asyncgens" title="asyncio.loop.shutdown_asyncgens"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.shutdown_asyncgens()</span></code></a></p></td>
  233. <td><p>Close asynchronous generators.</p></td>
  234. </tr>
  235. </tbody>
  236. </table>
  237. <p class="rubric">Debugging</p>
  238. <table class="full-width-table docutils align-default">
  239. <colgroup>
  240. <col style="width: 50.0%" />
  241. <col style="width: 50.0%" />
  242. </colgroup>
  243. <tbody>
  244. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.set_debug" title="asyncio.loop.set_debug"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.set_debug()</span></code></a></p></td>
  245. <td><p>Enable or disable the debug mode.</p></td>
  246. </tr>
  247. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.get_debug" title="asyncio.loop.get_debug"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.get_debug()</span></code></a></p></td>
  248. <td><p>Get the current debug mode.</p></td>
  249. </tr>
  250. </tbody>
  251. </table>
  252. <p class="rubric">Scheduling Callbacks</p>
  253. <table class="full-width-table docutils align-default">
  254. <colgroup>
  255. <col style="width: 50.0%" />
  256. <col style="width: 50.0%" />
  257. </colgroup>
  258. <tbody>
  259. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.call_soon" title="asyncio.loop.call_soon"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.call_soon()</span></code></a></p></td>
  260. <td><p>Invoke a callback soon.</p></td>
  261. </tr>
  262. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.call_soon_threadsafe" title="asyncio.loop.call_soon_threadsafe"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.call_soon_threadsafe()</span></code></a></p></td>
  263. <td><p>A thread-safe variant of <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.call_soon" title="asyncio.loop.call_soon"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.call_soon()</span></code></a>.</p></td>
  264. </tr>
  265. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.call_later" title="asyncio.loop.call_later"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.call_later()</span></code></a></p></td>
  266. <td><p>Invoke a callback <em>after</em> the given time.</p></td>
  267. </tr>
  268. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.call_at" title="asyncio.loop.call_at"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.call_at()</span></code></a></p></td>
  269. <td><p>Invoke a callback <em>at</em> the given time.</p></td>
  270. </tr>
  271. </tbody>
  272. </table>
  273. <p class="rubric">Thread/Process Pool</p>
  274. <table class="full-width-table docutils align-default">
  275. <colgroup>
  276. <col style="width: 50.0%" />
  277. <col style="width: 50.0%" />
  278. </colgroup>
  279. <tbody>
  280. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.run_in_executor" title="asyncio.loop.run_in_executor"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.run_in_executor()</span></code></a></p></td>
  281. <td><p>Run a CPU-bound or other blocking function in
  282. a <a class="reference internal" href="concurrent.futures.html#module-concurrent.futures" title="concurrent.futures: Execute computations concurrently using threads or processes."><code class="xref py py-mod docutils literal notranslate"><span class="pre">concurrent.futures</span></code></a> executor.</p></td>
  283. </tr>
  284. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.set_default_executor" title="asyncio.loop.set_default_executor"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.set_default_executor()</span></code></a></p></td>
  285. <td><p>Set the default executor for <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.run_in_executor" title="asyncio.loop.run_in_executor"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.run_in_executor()</span></code></a>.</p></td>
  286. </tr>
  287. </tbody>
  288. </table>
  289. <p class="rubric">Tasks and Futures</p>
  290. <table class="full-width-table docutils align-default">
  291. <colgroup>
  292. <col style="width: 50.0%" />
  293. <col style="width: 50.0%" />
  294. </colgroup>
  295. <tbody>
  296. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.create_future" title="asyncio.loop.create_future"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.create_future()</span></code></a></p></td>
  297. <td><p>Create a <a class="reference internal" href="asyncio-future.html#asyncio.Future" title="asyncio.Future"><code class="xref py py-class docutils literal notranslate"><span class="pre">Future</span></code></a> object.</p></td>
  298. </tr>
  299. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.create_task" title="asyncio.loop.create_task"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.create_task()</span></code></a></p></td>
  300. <td><p>Schedule coroutine as a <a class="reference internal" href="asyncio-task.html#asyncio.Task" title="asyncio.Task"><code class="xref py py-class docutils literal notranslate"><span class="pre">Task</span></code></a>.</p></td>
  301. </tr>
  302. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.set_task_factory" title="asyncio.loop.set_task_factory"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.set_task_factory()</span></code></a></p></td>
  303. <td><p>Set a factory used by <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.create_task" title="asyncio.loop.create_task"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.create_task()</span></code></a> to
  304. create <a class="reference internal" href="asyncio-task.html#asyncio.Task" title="asyncio.Task"><code class="xref py py-class docutils literal notranslate"><span class="pre">Tasks</span></code></a>.</p></td>
  305. </tr>
  306. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.get_task_factory" title="asyncio.loop.get_task_factory"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.get_task_factory()</span></code></a></p></td>
  307. <td><p>Get the factory <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.create_task" title="asyncio.loop.create_task"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.create_task()</span></code></a> uses
  308. to create <a class="reference internal" href="asyncio-task.html#asyncio.Task" title="asyncio.Task"><code class="xref py py-class docutils literal notranslate"><span class="pre">Tasks</span></code></a>.</p></td>
  309. </tr>
  310. </tbody>
  311. </table>
  312. <p class="rubric">DNS</p>
  313. <table class="full-width-table docutils align-default">
  314. <colgroup>
  315. <col style="width: 50.0%" />
  316. <col style="width: 50.0%" />
  317. </colgroup>
  318. <tbody>
  319. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.getaddrinfo" title="asyncio.loop.getaddrinfo"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.getaddrinfo()</span></code></a></p></td>
  320. <td><p>Asynchronous version of <a class="reference internal" href="socket.html#socket.getaddrinfo" title="socket.getaddrinfo"><code class="xref py py-meth docutils literal notranslate"><span class="pre">socket.getaddrinfo()</span></code></a>.</p></td>
  321. </tr>
  322. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.getnameinfo" title="asyncio.loop.getnameinfo"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.getnameinfo()</span></code></a></p></td>
  323. <td><p>Asynchronous version of <a class="reference internal" href="socket.html#socket.getnameinfo" title="socket.getnameinfo"><code class="xref py py-meth docutils literal notranslate"><span class="pre">socket.getnameinfo()</span></code></a>.</p></td>
  324. </tr>
  325. </tbody>
  326. </table>
  327. <p class="rubric">Networking and IPC</p>
  328. <table class="full-width-table docutils align-default">
  329. <colgroup>
  330. <col style="width: 50.0%" />
  331. <col style="width: 50.0%" />
  332. </colgroup>
  333. <tbody>
  334. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.create_connection" title="asyncio.loop.create_connection"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.create_connection()</span></code></a></p></td>
  335. <td><p>Open a TCP connection.</p></td>
  336. </tr>
  337. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.create_server" title="asyncio.loop.create_server"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.create_server()</span></code></a></p></td>
  338. <td><p>Create a TCP server.</p></td>
  339. </tr>
  340. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.create_unix_connection" title="asyncio.loop.create_unix_connection"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.create_unix_connection()</span></code></a></p></td>
  341. <td><p>Open a Unix socket connection.</p></td>
  342. </tr>
  343. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.create_unix_server" title="asyncio.loop.create_unix_server"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.create_unix_server()</span></code></a></p></td>
  344. <td><p>Create a Unix socket server.</p></td>
  345. </tr>
  346. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.connect_accepted_socket" title="asyncio.loop.connect_accepted_socket"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.connect_accepted_socket()</span></code></a></p></td>
  347. <td><p>Wrap a <a class="reference internal" href="socket.html#socket.socket" title="socket.socket"><code class="xref py py-class docutils literal notranslate"><span class="pre">socket</span></code></a> into a <code class="docutils literal notranslate"><span class="pre">(transport,</span> <span class="pre">protocol)</span></code>
  348. pair.</p></td>
  349. </tr>
  350. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.create_datagram_endpoint" title="asyncio.loop.create_datagram_endpoint"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.create_datagram_endpoint()</span></code></a></p></td>
  351. <td><p>Open a datagram (UDP) connection.</p></td>
  352. </tr>
  353. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.sendfile" title="asyncio.loop.sendfile"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.sendfile()</span></code></a></p></td>
  354. <td><p>Send a file over a transport.</p></td>
  355. </tr>
  356. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.start_tls" title="asyncio.loop.start_tls"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.start_tls()</span></code></a></p></td>
  357. <td><p>Upgrade an existing connection to TLS.</p></td>
  358. </tr>
  359. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.connect_read_pipe" title="asyncio.loop.connect_read_pipe"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.connect_read_pipe()</span></code></a></p></td>
  360. <td><p>Wrap a read end of a pipe into a <code class="docutils literal notranslate"><span class="pre">(transport,</span> <span class="pre">protocol)</span></code> pair.</p></td>
  361. </tr>
  362. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.connect_write_pipe" title="asyncio.loop.connect_write_pipe"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.connect_write_pipe()</span></code></a></p></td>
  363. <td><p>Wrap a write end of a pipe into a <code class="docutils literal notranslate"><span class="pre">(transport,</span> <span class="pre">protocol)</span></code> pair.</p></td>
  364. </tr>
  365. </tbody>
  366. </table>
  367. <p class="rubric">Sockets</p>
  368. <table class="full-width-table docutils align-default">
  369. <colgroup>
  370. <col style="width: 50.0%" />
  371. <col style="width: 50.0%" />
  372. </colgroup>
  373. <tbody>
  374. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.sock_recv" title="asyncio.loop.sock_recv"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.sock_recv()</span></code></a></p></td>
  375. <td><p>Receive data from the <a class="reference internal" href="socket.html#socket.socket" title="socket.socket"><code class="xref py py-class docutils literal notranslate"><span class="pre">socket</span></code></a>.</p></td>
  376. </tr>
  377. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.sock_recv_into" title="asyncio.loop.sock_recv_into"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.sock_recv_into()</span></code></a></p></td>
  378. <td><p>Receive data from the <a class="reference internal" href="socket.html#socket.socket" title="socket.socket"><code class="xref py py-class docutils literal notranslate"><span class="pre">socket</span></code></a> into a buffer.</p></td>
  379. </tr>
  380. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.sock_recvfrom" title="asyncio.loop.sock_recvfrom"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.sock_recvfrom()</span></code></a></p></td>
  381. <td><p>Receive a datagram from the <a class="reference internal" href="socket.html#socket.socket" title="socket.socket"><code class="xref py py-class docutils literal notranslate"><span class="pre">socket</span></code></a>.</p></td>
  382. </tr>
  383. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.sock_recvfrom_into" title="asyncio.loop.sock_recvfrom_into"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.sock_recvfrom_into()</span></code></a></p></td>
  384. <td><p>Receive a datagram from the <a class="reference internal" href="socket.html#socket.socket" title="socket.socket"><code class="xref py py-class docutils literal notranslate"><span class="pre">socket</span></code></a> into a buffer.</p></td>
  385. </tr>
  386. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.sock_sendall" title="asyncio.loop.sock_sendall"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.sock_sendall()</span></code></a></p></td>
  387. <td><p>Send data to the <a class="reference internal" href="socket.html#socket.socket" title="socket.socket"><code class="xref py py-class docutils literal notranslate"><span class="pre">socket</span></code></a>.</p></td>
  388. </tr>
  389. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.sock_sendto" title="asyncio.loop.sock_sendto"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.sock_sendto()</span></code></a></p></td>
  390. <td><p>Send a datagram via the <a class="reference internal" href="socket.html#socket.socket" title="socket.socket"><code class="xref py py-class docutils literal notranslate"><span class="pre">socket</span></code></a> to the given address.</p></td>
  391. </tr>
  392. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.sock_connect" title="asyncio.loop.sock_connect"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.sock_connect()</span></code></a></p></td>
  393. <td><p>Connect the <a class="reference internal" href="socket.html#socket.socket" title="socket.socket"><code class="xref py py-class docutils literal notranslate"><span class="pre">socket</span></code></a>.</p></td>
  394. </tr>
  395. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.sock_accept" title="asyncio.loop.sock_accept"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.sock_accept()</span></code></a></p></td>
  396. <td><p>Accept a <a class="reference internal" href="socket.html#socket.socket" title="socket.socket"><code class="xref py py-class docutils literal notranslate"><span class="pre">socket</span></code></a> connection.</p></td>
  397. </tr>
  398. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">await</span></code> <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.sock_sendfile" title="asyncio.loop.sock_sendfile"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.sock_sendfile()</span></code></a></p></td>
  399. <td><p>Send a file over the <a class="reference internal" href="socket.html#socket.socket" title="socket.socket"><code class="xref py py-class docutils literal notranslate"><span class="pre">socket</span></code></a>.</p></td>
  400. </tr>
  401. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.add_reader" title="asyncio.loop.add_reader"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.add_reader()</span></code></a></p></td>
  402. <td><p>Start watching a file descriptor for read availability.</p></td>
  403. </tr>
  404. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.remove_reader" title="asyncio.loop.remove_reader"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.remove_reader()</span></code></a></p></td>
  405. <td><p>Stop watching a file descriptor for read availability.</p></td>
  406. </tr>
  407. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.add_writer" title="asyncio.loop.add_writer"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.add_writer()</span></code></a></p></td>
  408. <td><p>Start watching a file descriptor for write availability.</p></td>
  409. </tr>
  410. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.remove_writer" title="asyncio.loop.remove_writer"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.remove_writer()</span></code></a></p></td>
  411. <td><p>Stop watching a file descriptor for write availability.</p></td>
  412. </tr>
  413. </tbody>
  414. </table>
  415. <p class="rubric">Unix Signals</p>
  416. <table class="full-width-table docutils align-default">
  417. <colgroup>
  418. <col style="width: 50.0%" />
  419. <col style="width: 50.0%" />
  420. </colgroup>
  421. <tbody>
  422. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.add_signal_handler" title="asyncio.loop.add_signal_handler"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.add_signal_handler()</span></code></a></p></td>
  423. <td><p>Add a handler for a <a class="reference internal" href="signal.html#module-signal" title="signal: Set handlers for asynchronous events."><code class="xref py py-mod docutils literal notranslate"><span class="pre">signal</span></code></a>.</p></td>
  424. </tr>
  425. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.remove_signal_handler" title="asyncio.loop.remove_signal_handler"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.remove_signal_handler()</span></code></a></p></td>
  426. <td><p>Remove a handler for a <a class="reference internal" href="signal.html#module-signal" title="signal: Set handlers for asynchronous events."><code class="xref py py-mod docutils literal notranslate"><span class="pre">signal</span></code></a>.</p></td>
  427. </tr>
  428. </tbody>
  429. </table>
  430. <p class="rubric">Subprocesses</p>
  431. <table class="full-width-table docutils align-default">
  432. <colgroup>
  433. <col style="width: 50.0%" />
  434. <col style="width: 50.0%" />
  435. </colgroup>
  436. <tbody>
  437. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.subprocess_exec" title="asyncio.loop.subprocess_exec"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.subprocess_exec()</span></code></a></p></td>
  438. <td><p>Spawn a subprocess.</p></td>
  439. </tr>
  440. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.subprocess_shell" title="asyncio.loop.subprocess_shell"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.subprocess_shell()</span></code></a></p></td>
  441. <td><p>Spawn a subprocess from a shell command.</p></td>
  442. </tr>
  443. </tbody>
  444. </table>
  445. <p class="rubric">Error Handling</p>
  446. <table class="full-width-table docutils align-default">
  447. <colgroup>
  448. <col style="width: 50.0%" />
  449. <col style="width: 50.0%" />
  450. </colgroup>
  451. <tbody>
  452. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.call_exception_handler" title="asyncio.loop.call_exception_handler"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.call_exception_handler()</span></code></a></p></td>
  453. <td><p>Call the exception handler.</p></td>
  454. </tr>
  455. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.set_exception_handler" title="asyncio.loop.set_exception_handler"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.set_exception_handler()</span></code></a></p></td>
  456. <td><p>Set a new exception handler.</p></td>
  457. </tr>
  458. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.get_exception_handler" title="asyncio.loop.get_exception_handler"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.get_exception_handler()</span></code></a></p></td>
  459. <td><p>Get the current exception handler.</p></td>
  460. </tr>
  461. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.default_exception_handler" title="asyncio.loop.default_exception_handler"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.default_exception_handler()</span></code></a></p></td>
  462. <td><p>The default exception handler implementation.</p></td>
  463. </tr>
  464. </tbody>
  465. </table>
  466. <p class="rubric">Examples</p>
  467. <ul class="simple">
  468. <li><p><a class="reference internal" href="asyncio-eventloop.html#asyncio-example-lowlevel-helloworld"><span class="std std-ref">Using asyncio.new_event_loop() and loop.run_forever()</span></a>.</p></li>
  469. <li><p><a class="reference internal" href="asyncio-eventloop.html#asyncio-example-call-later"><span class="std std-ref">Using loop.call_later()</span></a>.</p></li>
  470. <li><p>Using <code class="docutils literal notranslate"><span class="pre">loop.create_connection()</span></code> to implement
  471. <a class="reference internal" href="asyncio-protocol.html#asyncio-example-tcp-echo-client-protocol"><span class="std std-ref">an echo-client</span></a>.</p></li>
  472. <li><p>Using <code class="docutils literal notranslate"><span class="pre">loop.create_connection()</span></code> to
  473. <a class="reference internal" href="asyncio-protocol.html#asyncio-example-create-connection"><span class="std std-ref">connect a socket</span></a>.</p></li>
  474. <li><p><a class="reference internal" href="asyncio-eventloop.html#asyncio-example-watch-fd"><span class="std std-ref">Using add_reader() to watch an FD for read events</span></a>.</p></li>
  475. <li><p><a class="reference internal" href="asyncio-eventloop.html#asyncio-example-unix-signals"><span class="std std-ref">Using loop.add_signal_handler()</span></a>.</p></li>
  476. <li><p><a class="reference internal" href="asyncio-protocol.html#asyncio-example-subprocess-proto"><span class="std std-ref">Using loop.subprocess_exec()</span></a>.</p></li>
  477. </ul>
  478. </section>
  479. <section id="transports">
  480. <h2>Transports<a class="headerlink" href="#transports" title="Link to this heading">¶</a></h2>
  481. <p>All transports implement the following methods:</p>
  482. <table class="full-width-table docutils align-default">
  483. <colgroup>
  484. <col style="width: 50.0%" />
  485. <col style="width: 50.0%" />
  486. </colgroup>
  487. <tbody>
  488. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.BaseTransport.close" title="asyncio.BaseTransport.close"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.close()</span></code></a></p></td>
  489. <td><p>Close the transport.</p></td>
  490. </tr>
  491. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.BaseTransport.is_closing" title="asyncio.BaseTransport.is_closing"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.is_closing()</span></code></a></p></td>
  492. <td><p>Return <code class="docutils literal notranslate"><span class="pre">True</span></code> if the transport is closing or is closed.</p></td>
  493. </tr>
  494. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.BaseTransport.get_extra_info" title="asyncio.BaseTransport.get_extra_info"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.get_extra_info()</span></code></a></p></td>
  495. <td><p>Request for information about the transport.</p></td>
  496. </tr>
  497. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.BaseTransport.set_protocol" title="asyncio.BaseTransport.set_protocol"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.set_protocol()</span></code></a></p></td>
  498. <td><p>Set a new protocol.</p></td>
  499. </tr>
  500. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.BaseTransport.get_protocol" title="asyncio.BaseTransport.get_protocol"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.get_protocol()</span></code></a></p></td>
  501. <td><p>Return the current protocol.</p></td>
  502. </tr>
  503. </tbody>
  504. </table>
  505. <p>Transports that can receive data (TCP and Unix connections,
  506. pipes, etc). Returned from methods like
  507. <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.create_connection" title="asyncio.loop.create_connection"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.create_connection()</span></code></a>, <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.create_unix_connection" title="asyncio.loop.create_unix_connection"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.create_unix_connection()</span></code></a>,
  508. <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.connect_read_pipe" title="asyncio.loop.connect_read_pipe"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.connect_read_pipe()</span></code></a>, etc:</p>
  509. <p class="rubric">Read Transports</p>
  510. <table class="full-width-table docutils align-default">
  511. <colgroup>
  512. <col style="width: 50.0%" />
  513. <col style="width: 50.0%" />
  514. </colgroup>
  515. <tbody>
  516. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.ReadTransport.is_reading" title="asyncio.ReadTransport.is_reading"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.is_reading()</span></code></a></p></td>
  517. <td><p>Return <code class="docutils literal notranslate"><span class="pre">True</span></code> if the transport is receiving.</p></td>
  518. </tr>
  519. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.ReadTransport.pause_reading" title="asyncio.ReadTransport.pause_reading"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.pause_reading()</span></code></a></p></td>
  520. <td><p>Pause receiving.</p></td>
  521. </tr>
  522. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.ReadTransport.resume_reading" title="asyncio.ReadTransport.resume_reading"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.resume_reading()</span></code></a></p></td>
  523. <td><p>Resume receiving.</p></td>
  524. </tr>
  525. </tbody>
  526. </table>
  527. <p>Transports that can Send data (TCP and Unix connections,
  528. pipes, etc). Returned from methods like
  529. <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.create_connection" title="asyncio.loop.create_connection"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.create_connection()</span></code></a>, <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.create_unix_connection" title="asyncio.loop.create_unix_connection"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.create_unix_connection()</span></code></a>,
  530. <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.connect_write_pipe" title="asyncio.loop.connect_write_pipe"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.connect_write_pipe()</span></code></a>, etc:</p>
  531. <p class="rubric">Write Transports</p>
  532. <table class="full-width-table docutils align-default">
  533. <colgroup>
  534. <col style="width: 50.0%" />
  535. <col style="width: 50.0%" />
  536. </colgroup>
  537. <tbody>
  538. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.WriteTransport.write" title="asyncio.WriteTransport.write"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.write()</span></code></a></p></td>
  539. <td><p>Write data to the transport.</p></td>
  540. </tr>
  541. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.WriteTransport.writelines" title="asyncio.WriteTransport.writelines"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.writelines()</span></code></a></p></td>
  542. <td><p>Write buffers to the transport.</p></td>
  543. </tr>
  544. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.WriteTransport.can_write_eof" title="asyncio.WriteTransport.can_write_eof"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.can_write_eof()</span></code></a></p></td>
  545. <td><p>Return <a class="reference internal" href="constants.html#True" title="True"><code class="xref py py-const docutils literal notranslate"><span class="pre">True</span></code></a> if the transport supports sending EOF.</p></td>
  546. </tr>
  547. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.WriteTransport.write_eof" title="asyncio.WriteTransport.write_eof"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.write_eof()</span></code></a></p></td>
  548. <td><p>Close and send EOF after flushing buffered data.</p></td>
  549. </tr>
  550. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.WriteTransport.abort" title="asyncio.WriteTransport.abort"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.abort()</span></code></a></p></td>
  551. <td><p>Close the transport immediately.</p></td>
  552. </tr>
  553. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.WriteTransport.get_write_buffer_size" title="asyncio.WriteTransport.get_write_buffer_size"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.get_write_buffer_size()</span></code></a></p></td>
  554. <td><p>Return the current size of the output buffer.</p></td>
  555. </tr>
  556. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.WriteTransport.get_write_buffer_limits" title="asyncio.WriteTransport.get_write_buffer_limits"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.get_write_buffer_limits()</span></code></a></p></td>
  557. <td><p>Return high and low water marks for write flow control.</p></td>
  558. </tr>
  559. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.WriteTransport.set_write_buffer_limits" title="asyncio.WriteTransport.set_write_buffer_limits"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.set_write_buffer_limits()</span></code></a></p></td>
  560. <td><p>Set new high and low water marks for write flow control.</p></td>
  561. </tr>
  562. </tbody>
  563. </table>
  564. <p>Transports returned by <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.create_datagram_endpoint" title="asyncio.loop.create_datagram_endpoint"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.create_datagram_endpoint()</span></code></a>:</p>
  565. <p class="rubric">Datagram Transports</p>
  566. <table class="full-width-table docutils align-default">
  567. <colgroup>
  568. <col style="width: 50.0%" />
  569. <col style="width: 50.0%" />
  570. </colgroup>
  571. <tbody>
  572. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.DatagramTransport.sendto" title="asyncio.DatagramTransport.sendto"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.sendto()</span></code></a></p></td>
  573. <td><p>Send data to the remote peer.</p></td>
  574. </tr>
  575. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.DatagramTransport.abort" title="asyncio.DatagramTransport.abort"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.abort()</span></code></a></p></td>
  576. <td><p>Close the transport immediately.</p></td>
  577. </tr>
  578. </tbody>
  579. </table>
  580. <p>Low-level transport abstraction over subprocesses.
  581. Returned by <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.subprocess_exec" title="asyncio.loop.subprocess_exec"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.subprocess_exec()</span></code></a> and
  582. <a class="reference internal" href="asyncio-eventloop.html#asyncio.loop.subprocess_shell" title="asyncio.loop.subprocess_shell"><code class="xref py py-meth docutils literal notranslate"><span class="pre">loop.subprocess_shell()</span></code></a>:</p>
  583. <p class="rubric">Subprocess Transports</p>
  584. <table class="full-width-table docutils align-default">
  585. <colgroup>
  586. <col style="width: 50.0%" />
  587. <col style="width: 50.0%" />
  588. </colgroup>
  589. <tbody>
  590. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.SubprocessTransport.get_pid" title="asyncio.SubprocessTransport.get_pid"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.get_pid()</span></code></a></p></td>
  591. <td><p>Return the subprocess process id.</p></td>
  592. </tr>
  593. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.SubprocessTransport.get_pipe_transport" title="asyncio.SubprocessTransport.get_pipe_transport"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.get_pipe_transport()</span></code></a></p></td>
  594. <td><p>Return the transport for the requested communication pipe
  595. (<em>stdin</em>, <em>stdout</em>, or <em>stderr</em>).</p></td>
  596. </tr>
  597. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.SubprocessTransport.get_returncode" title="asyncio.SubprocessTransport.get_returncode"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.get_returncode()</span></code></a></p></td>
  598. <td><p>Return the subprocess return code.</p></td>
  599. </tr>
  600. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.SubprocessTransport.kill" title="asyncio.SubprocessTransport.kill"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.kill()</span></code></a></p></td>
  601. <td><p>Kill the subprocess.</p></td>
  602. </tr>
  603. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.SubprocessTransport.send_signal" title="asyncio.SubprocessTransport.send_signal"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.send_signal()</span></code></a></p></td>
  604. <td><p>Send a signal to the subprocess.</p></td>
  605. </tr>
  606. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.SubprocessTransport.terminate" title="asyncio.SubprocessTransport.terminate"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.terminate()</span></code></a></p></td>
  607. <td><p>Stop the subprocess.</p></td>
  608. </tr>
  609. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-protocol.html#asyncio.SubprocessTransport.close" title="asyncio.SubprocessTransport.close"><code class="xref py py-meth docutils literal notranslate"><span class="pre">transport.close()</span></code></a></p></td>
  610. <td><p>Kill the subprocess and close all pipes.</p></td>
  611. </tr>
  612. </tbody>
  613. </table>
  614. </section>
  615. <section id="protocols">
  616. <h2>Protocols<a class="headerlink" href="#protocols" title="Link to this heading">¶</a></h2>
  617. <p>Protocol classes can implement the following <strong>callback methods</strong>:</p>
  618. <table class="full-width-table docutils align-default">
  619. <colgroup>
  620. <col style="width: 50.0%" />
  621. <col style="width: 50.0%" />
  622. </colgroup>
  623. <tbody>
  624. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">callback</span></code> <a class="reference internal" href="asyncio-protocol.html#asyncio.BaseProtocol.connection_made" title="asyncio.BaseProtocol.connection_made"><code class="xref py py-meth docutils literal notranslate"><span class="pre">connection_made()</span></code></a></p></td>
  625. <td><p>Called when a connection is made.</p></td>
  626. </tr>
  627. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">callback</span></code> <a class="reference internal" href="asyncio-protocol.html#asyncio.BaseProtocol.connection_lost" title="asyncio.BaseProtocol.connection_lost"><code class="xref py py-meth docutils literal notranslate"><span class="pre">connection_lost()</span></code></a></p></td>
  628. <td><p>Called when the connection is lost or closed.</p></td>
  629. </tr>
  630. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">callback</span></code> <a class="reference internal" href="asyncio-protocol.html#asyncio.BaseProtocol.pause_writing" title="asyncio.BaseProtocol.pause_writing"><code class="xref py py-meth docutils literal notranslate"><span class="pre">pause_writing()</span></code></a></p></td>
  631. <td><p>Called when the transport’s buffer goes over the high water mark.</p></td>
  632. </tr>
  633. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">callback</span></code> <a class="reference internal" href="asyncio-protocol.html#asyncio.BaseProtocol.resume_writing" title="asyncio.BaseProtocol.resume_writing"><code class="xref py py-meth docutils literal notranslate"><span class="pre">resume_writing()</span></code></a></p></td>
  634. <td><p>Called when the transport’s buffer drains below the low water mark.</p></td>
  635. </tr>
  636. </tbody>
  637. </table>
  638. <p class="rubric">Streaming Protocols (TCP, Unix Sockets, Pipes)</p>
  639. <table class="full-width-table docutils align-default">
  640. <colgroup>
  641. <col style="width: 50.0%" />
  642. <col style="width: 50.0%" />
  643. </colgroup>
  644. <tbody>
  645. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">callback</span></code> <a class="reference internal" href="asyncio-protocol.html#asyncio.Protocol.data_received" title="asyncio.Protocol.data_received"><code class="xref py py-meth docutils literal notranslate"><span class="pre">data_received()</span></code></a></p></td>
  646. <td><p>Called when some data is received.</p></td>
  647. </tr>
  648. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">callback</span></code> <a class="reference internal" href="asyncio-protocol.html#asyncio.Protocol.eof_received" title="asyncio.Protocol.eof_received"><code class="xref py py-meth docutils literal notranslate"><span class="pre">eof_received()</span></code></a></p></td>
  649. <td><p>Called when an EOF is received.</p></td>
  650. </tr>
  651. </tbody>
  652. </table>
  653. <p class="rubric">Buffered Streaming Protocols</p>
  654. <table class="full-width-table docutils align-default">
  655. <colgroup>
  656. <col style="width: 50.0%" />
  657. <col style="width: 50.0%" />
  658. </colgroup>
  659. <tbody>
  660. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">callback</span></code> <a class="reference internal" href="asyncio-protocol.html#asyncio.BufferedProtocol.get_buffer" title="asyncio.BufferedProtocol.get_buffer"><code class="xref py py-meth docutils literal notranslate"><span class="pre">get_buffer()</span></code></a></p></td>
  661. <td><p>Called to allocate a new receive buffer.</p></td>
  662. </tr>
  663. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">callback</span></code> <a class="reference internal" href="asyncio-protocol.html#asyncio.BufferedProtocol.buffer_updated" title="asyncio.BufferedProtocol.buffer_updated"><code class="xref py py-meth docutils literal notranslate"><span class="pre">buffer_updated()</span></code></a></p></td>
  664. <td><p>Called when the buffer was updated with the received data.</p></td>
  665. </tr>
  666. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">callback</span></code> <a class="reference internal" href="asyncio-protocol.html#asyncio.BufferedProtocol.eof_received" title="asyncio.BufferedProtocol.eof_received"><code class="xref py py-meth docutils literal notranslate"><span class="pre">eof_received()</span></code></a></p></td>
  667. <td><p>Called when an EOF is received.</p></td>
  668. </tr>
  669. </tbody>
  670. </table>
  671. <p class="rubric">Datagram Protocols</p>
  672. <table class="full-width-table docutils align-default">
  673. <colgroup>
  674. <col style="width: 50.0%" />
  675. <col style="width: 50.0%" />
  676. </colgroup>
  677. <tbody>
  678. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">callback</span></code> <a class="reference internal" href="asyncio-protocol.html#asyncio.DatagramProtocol.datagram_received" title="asyncio.DatagramProtocol.datagram_received"><code class="xref py py-meth docutils literal notranslate"><span class="pre">datagram_received()</span></code></a></p></td>
  679. <td><p>Called when a datagram is received.</p></td>
  680. </tr>
  681. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">callback</span></code> <a class="reference internal" href="asyncio-protocol.html#asyncio.DatagramProtocol.error_received" title="asyncio.DatagramProtocol.error_received"><code class="xref py py-meth docutils literal notranslate"><span class="pre">error_received()</span></code></a></p></td>
  682. <td><p>Called when a previous send or receive operation raises an
  683. <a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-class docutils literal notranslate"><span class="pre">OSError</span></code></a>.</p></td>
  684. </tr>
  685. </tbody>
  686. </table>
  687. <p class="rubric">Subprocess Protocols</p>
  688. <table class="full-width-table docutils align-default">
  689. <colgroup>
  690. <col style="width: 50.0%" />
  691. <col style="width: 50.0%" />
  692. </colgroup>
  693. <tbody>
  694. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">callback</span></code> <a class="reference internal" href="asyncio-protocol.html#asyncio.SubprocessProtocol.pipe_data_received" title="asyncio.SubprocessProtocol.pipe_data_received"><code class="xref py py-meth docutils literal notranslate"><span class="pre">pipe_data_received()</span></code></a></p></td>
  695. <td><p>Called when the child process writes data into its
  696. <em>stdout</em> or <em>stderr</em> pipe.</p></td>
  697. </tr>
  698. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">callback</span></code> <a class="reference internal" href="asyncio-protocol.html#asyncio.SubprocessProtocol.pipe_connection_lost" title="asyncio.SubprocessProtocol.pipe_connection_lost"><code class="xref py py-meth docutils literal notranslate"><span class="pre">pipe_connection_lost()</span></code></a></p></td>
  699. <td><p>Called when one of the pipes communicating with
  700. the child process is closed.</p></td>
  701. </tr>
  702. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">callback</span></code> <a class="reference internal" href="asyncio-protocol.html#asyncio.SubprocessProtocol.process_exited" title="asyncio.SubprocessProtocol.process_exited"><code class="xref py py-meth docutils literal notranslate"><span class="pre">process_exited()</span></code></a></p></td>
  703. <td><p>Called when the child process has exited. It can be called before
  704. <a class="reference internal" href="asyncio-protocol.html#asyncio.SubprocessProtocol.pipe_data_received" title="asyncio.SubprocessProtocol.pipe_data_received"><code class="xref py py-meth docutils literal notranslate"><span class="pre">pipe_data_received()</span></code></a> and
  705. <a class="reference internal" href="asyncio-protocol.html#asyncio.SubprocessProtocol.pipe_connection_lost" title="asyncio.SubprocessProtocol.pipe_connection_lost"><code class="xref py py-meth docutils literal notranslate"><span class="pre">pipe_connection_lost()</span></code></a> methods.</p></td>
  706. </tr>
  707. </tbody>
  708. </table>
  709. </section>
  710. <section id="event-loop-policies">
  711. <h2>Event Loop Policies<a class="headerlink" href="#event-loop-policies" title="Link to this heading">¶</a></h2>
  712. <p>Policies is a low-level mechanism to alter the behavior of
  713. functions like <a class="reference internal" href="asyncio-eventloop.html#asyncio.get_event_loop" title="asyncio.get_event_loop"><code class="xref py py-func docutils literal notranslate"><span class="pre">asyncio.get_event_loop()</span></code></a>. See also
  714. the main <a class="reference internal" href="asyncio-policy.html#asyncio-policies"><span class="std std-ref">policies section</span></a> for more
  715. details.</p>
  716. <p class="rubric">Accessing Policies</p>
  717. <table class="full-width-table docutils align-default">
  718. <colgroup>
  719. <col style="width: 50.0%" />
  720. <col style="width: 50.0%" />
  721. </colgroup>
  722. <tbody>
  723. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-policy.html#asyncio.get_event_loop_policy" title="asyncio.get_event_loop_policy"><code class="xref py py-meth docutils literal notranslate"><span class="pre">asyncio.get_event_loop_policy()</span></code></a></p></td>
  724. <td><p>Return the current process-wide policy.</p></td>
  725. </tr>
  726. <tr class="row-even"><td><p><a class="reference internal" href="asyncio-policy.html#asyncio.set_event_loop_policy" title="asyncio.set_event_loop_policy"><code class="xref py py-meth docutils literal notranslate"><span class="pre">asyncio.set_event_loop_policy()</span></code></a></p></td>
  727. <td><p>Set a new process-wide policy.</p></td>
  728. </tr>
  729. <tr class="row-odd"><td><p><a class="reference internal" href="asyncio-policy.html#asyncio.AbstractEventLoopPolicy" title="asyncio.AbstractEventLoopPolicy"><code class="xref py py-class docutils literal notranslate"><span class="pre">AbstractEventLoopPolicy</span></code></a></p></td>
  730. <td><p>Base class for policy objects.</p></td>
  731. </tr>
  732. </tbody>
  733. </table>
  734. </section>
  735. </section>
  736. <div class="clearer"></div>
  737. </div>
  738. </div>
  739. </div>
  740. <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
  741. <div class="sphinxsidebarwrapper">
  742. <div>
  743. <h3><a href="../contents.html">Table of Contents</a></h3>
  744. <ul>
  745. <li><a class="reference internal" href="#">Low-level API Index</a><ul>
  746. <li><a class="reference internal" href="#obtaining-the-event-loop">Obtaining the Event Loop</a></li>
  747. <li><a class="reference internal" href="#event-loop-methods">Event Loop Methods</a></li>
  748. <li><a class="reference internal" href="#transports">Transports</a></li>
  749. <li><a class="reference internal" href="#protocols">Protocols</a></li>
  750. <li><a class="reference internal" href="#event-loop-policies">Event Loop Policies</a></li>
  751. </ul>
  752. </li>
  753. </ul>
  754. </div>
  755. <div>
  756. <h4>Previous topic</h4>
  757. <p class="topless"><a href="asyncio-api-index.html"
  758. title="previous chapter">High-level API Index</a></p>
  759. </div>
  760. <div>
  761. <h4>Next topic</h4>
  762. <p class="topless"><a href="asyncio-dev.html"
  763. title="next chapter">Developing with asyncio</a></p>
  764. </div>
  765. <div role="note" aria-label="source link">
  766. <h3>This Page</h3>
  767. <ul class="this-page-menu">
  768. <li><a href="../bugs.html">Report a Bug</a></li>
  769. <li>
  770. <a href="https://github.com/python/cpython/blob/main/Doc/library/asyncio-llapi-index.rst"
  771. rel="nofollow">Show Source
  772. </a>
  773. </li>
  774. </ul>
  775. </div>
  776. </div>
  777. <div id="sidebarbutton" title="Collapse sidebar">
  778. <span>«</span>
  779. </div>
  780. </div>
  781. <div class="clearer"></div>
  782. </div>
  783. <div class="related" role="navigation" aria-label="related navigation">
  784. <h3>Navigation</h3>
  785. <ul>
  786. <li class="right" style="margin-right: 10px">
  787. <a href="../genindex.html" title="General Index"
  788. >index</a></li>
  789. <li class="right" >
  790. <a href="../py-modindex.html" title="Python Module Index"
  791. >modules</a> |</li>
  792. <li class="right" >
  793. <a href="asyncio-dev.html" title="Developing with asyncio"
  794. >next</a> |</li>
  795. <li class="right" >
  796. <a href="asyncio-api-index.html" title="High-level API Index"
  797. >previous</a> |</li>
  798. <li><img src="../_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"/></li>
  799. <li><a href="https://www.python.org/">Python</a> &#187;</li>
  800. <li class="switchers">
  801. <div class="language_switcher_placeholder"></div>
  802. <div class="version_switcher_placeholder"></div>
  803. </li>
  804. <li>
  805. </li>
  806. <li id="cpython-language-and-version">
  807. <a href="../index.html">3.12.3 Documentation</a> &#187;
  808. </li>
  809. <li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> &#187;</li>
  810. <li class="nav-item nav-item-2"><a href="ipc.html" >Networking and Interprocess Communication</a> &#187;</li>
  811. <li class="nav-item nav-item-3"><a href="asyncio.html" ><code class="xref py py-mod docutils literal notranslate"><span class="pre">asyncio</span></code> — Asynchronous I/O</a> &#187;</li>
  812. <li class="nav-item nav-item-this"><a href="">Low-level API Index</a></li>
  813. <li class="right">
  814. <div class="inline-search" role="search">
  815. <form class="inline-search" action="../search.html" method="get">
  816. <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box" />
  817. <input type="submit" value="Go" />
  818. </form>
  819. </div>
  820. |
  821. </li>
  822. <li class="right">
  823. <label class="theme-selector-label">
  824. Theme
  825. <select class="theme-selector" oninput="activateTheme(this.value)">
  826. <option value="auto" selected>Auto</option>
  827. <option value="light">Light</option>
  828. <option value="dark">Dark</option>
  829. </select>
  830. </label> |</li>
  831. </ul>
  832. </div>
  833. <div class="footer">
  834. &copy;
  835. <a href="../copyright.html">
  836. Copyright
  837. </a>
  838. 2001-2024, Python Software Foundation.
  839. <br />
  840. This page is licensed under the Python Software Foundation License Version 2.
  841. <br />
  842. Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
  843. <br />
  844. See <a href="/license.html">History and License</a> for more information.<br />
  845. <br />
  846. The Python Software Foundation is a non-profit corporation.
  847. <a href="https://www.python.org/psf/donations/">Please donate.</a>
  848. <br />
  849. <br />
  850. Last updated on Apr 09, 2024 (13:47 UTC).
  851. <a href="/bugs.html">Found a bug</a>?
  852. <br />
  853. Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.2.6.
  854. </div>
  855. </body>
  856. </html>
上海开阖软件有限公司 沪ICP备12045867号-1