2018-09-14 13:32:07 -07:00
|
|
|
:mod:`asyncio` --- Asynchronous I/O
|
|
|
|
|
===================================
|
2013-11-22 11:47:22 -08:00
|
|
|
|
|
|
|
|
.. module:: asyncio
|
2018-09-14 13:32:07 -07:00
|
|
|
:synopsis: Asynchronous I/O.
|
2016-06-11 15:02:54 -04:00
|
|
|
|
2013-11-22 16:53:25 -08:00
|
|
|
--------------
|
2013-11-22 11:47:22 -08:00
|
|
|
|
2018-09-14 13:32:07 -07:00
|
|
|
.. TODO: rewrite the introduction section
|
|
|
|
|
|
2013-11-23 00:34:26 +01:00
|
|
|
This module provides infrastructure for writing single-threaded concurrent
|
|
|
|
|
code using coroutines, multiplexing I/O access over sockets and other
|
|
|
|
|
resources, running network clients and servers, and other related primitives.
|
|
|
|
|
Here is a more detailed list of the package contents:
|
|
|
|
|
|
2014-02-02 15:03:02 +01:00
|
|
|
* a pluggable :ref:`event loop <asyncio-event-loop>` with various system-specific
|
2013-11-23 00:34:26 +01:00
|
|
|
implementations;
|
|
|
|
|
|
2014-02-02 15:03:02 +01:00
|
|
|
* :ref:`transport <asyncio-transport>` and :ref:`protocol <asyncio-protocol>` abstractions
|
2014-10-29 10:57:37 +01:00
|
|
|
(similar to those in `Twisted <https://twistedmatrix.com/trac/>`_);
|
2013-11-23 00:34:26 +01:00
|
|
|
|
|
|
|
|
* concrete support for TCP, UDP, SSL, subprocess pipes, delayed calls, and
|
|
|
|
|
others (some may be system-dependent);
|
|
|
|
|
|
2014-02-08 18:36:14 -06:00
|
|
|
* a :class:`Future` class that mimics the one in the :mod:`concurrent.futures`
|
2013-12-03 19:17:25 +01:00
|
|
|
module, but adapted for use with the event loop;
|
2013-11-23 00:34:26 +01:00
|
|
|
|
|
|
|
|
* coroutines and tasks based on ``yield from`` (:PEP:`380`), to help write
|
|
|
|
|
concurrent code in a sequential fashion;
|
|
|
|
|
|
2014-02-09 06:07:47 -08:00
|
|
|
* cancellation support for :class:`Future`\s and coroutines;
|
2013-11-23 00:34:26 +01:00
|
|
|
|
2014-02-02 15:03:02 +01:00
|
|
|
* :ref:`synchronization primitives <asyncio-sync>` for use between coroutines in
|
2013-11-23 00:34:26 +01:00
|
|
|
a single thread, mimicking those in the :mod:`threading` module;
|
|
|
|
|
|
2013-11-22 15:45:02 -08:00
|
|
|
* an interface for passing work off to a threadpool, for times when
|
|
|
|
|
you absolutely, positively have to use a library that makes blocking
|
|
|
|
|
I/O calls.
|
|
|
|
|
|
2015-02-25 14:23:51 +01:00
|
|
|
Asynchronous programming is more complex than classical "sequential"
|
|
|
|
|
programming: see the :ref:`Develop with asyncio <asyncio-dev>` page which lists
|
|
|
|
|
common traps and explains how to avoid them. :ref:`Enable the debug mode
|
|
|
|
|
<asyncio-debug-mode>` during development to detect common issues.
|
|
|
|
|
|
2018-09-14 13:32:07 -07:00
|
|
|
High-level APIs:
|
2013-11-23 00:34:26 +01:00
|
|
|
|
2013-12-03 01:08:00 +01:00
|
|
|
.. toctree::
|
2018-09-14 13:32:07 -07:00
|
|
|
:maxdepth: 1
|
2013-12-03 01:08:00 +01:00
|
|
|
|
|
|
|
|
asyncio-task.rst
|
2014-01-23 11:05:01 +01:00
|
|
|
asyncio-stream.rst
|
2013-12-03 01:08:00 +01:00
|
|
|
asyncio-sync.rst
|
2018-09-14 13:32:07 -07:00
|
|
|
asyncio-subprocess.rst
|
2015-02-25 13:55:43 +01:00
|
|
|
asyncio-queue.rst
|
2018-09-11 09:54:40 -07:00
|
|
|
asyncio-exceptions.rst
|
2013-11-23 00:34:26 +01:00
|
|
|
|
2018-09-14 13:32:07 -07:00
|
|
|
Low-level APIs:
|
|
|
|
|
|
|
|
|
|
.. toctree::
|
|
|
|
|
:maxdepth: 1
|
2013-12-03 15:04:36 +01:00
|
|
|
|
2018-09-14 13:32:07 -07:00
|
|
|
asyncio-eventloop.rst
|
|
|
|
|
asyncio-future.rst
|
|
|
|
|
asyncio-protocol.rst
|
|
|
|
|
asyncio-policy.rst
|
|
|
|
|
asyncio-platforms.rst
|
|
|
|
|
|
|
|
|
|
Guides and Tutorials:
|
|
|
|
|
|
|
|
|
|
.. toctree::
|
|
|
|
|
:maxdepth: 1
|
|
|
|
|
|
|
|
|
|
asyncio-dev.rst
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.. seealso::
|
2013-12-03 15:04:36 +01:00
|
|
|
|
2018-09-14 13:32:07 -07:00
|
|
|
The :mod:`asyncio` module was proposed in :PEP:`3156`.
|
|
|
|
|
Since the acceptance of the PEP many new APIs were added and many
|
|
|
|
|
original APIs were altered. The PEP should be treated as a
|
|
|
|
|
historical document.
|