2013-11-22 15:47:22 -04:00
|
|
|
:mod:`asyncio` -- Asynchronous I/O, event loop, coroutines and tasks
|
|
|
|
====================================================================
|
|
|
|
|
|
|
|
.. module:: asyncio
|
|
|
|
:synopsis: Asynchronous I/O, event loop, coroutines and tasks.
|
|
|
|
|
2014-09-06 06:43:06 -03:00
|
|
|
.. note::
|
|
|
|
|
|
|
|
The asyncio package has been included in the standard library on a
|
|
|
|
:term:`provisional basis <provisional package>`. Backwards incompatible
|
|
|
|
changes (up to and including removal of the module) may occur if deemed
|
|
|
|
necessary by the core developers.
|
|
|
|
|
2013-11-22 15:47:22 -04:00
|
|
|
.. versionadded:: 3.4
|
|
|
|
|
2013-11-22 20:53:25 -04:00
|
|
|
**Source code:** :source:`Lib/asyncio/`
|
|
|
|
|
|
|
|
--------------
|
2013-11-22 15:47:22 -04:00
|
|
|
|
2013-11-22 19:34:26 -04: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 10:03:02 -04:00
|
|
|
* a pluggable :ref:`event loop <asyncio-event-loop>` with various system-specific
|
2013-11-22 19:34:26 -04:00
|
|
|
implementations;
|
|
|
|
|
2014-02-02 10:03:02 -04:00
|
|
|
* :ref:`transport <asyncio-transport>` and :ref:`protocol <asyncio-protocol>` abstractions
|
2014-10-29 06:57:37 -03:00
|
|
|
(similar to those in `Twisted <https://twistedmatrix.com/trac/>`_);
|
2013-11-22 19:34:26 -04:00
|
|
|
|
|
|
|
* concrete support for TCP, UDP, SSL, subprocess pipes, delayed calls, and
|
|
|
|
others (some may be system-dependent);
|
|
|
|
|
2014-02-08 20:36:14 -04:00
|
|
|
* a :class:`Future` class that mimics the one in the :mod:`concurrent.futures`
|
2013-12-03 14:17:25 -04:00
|
|
|
module, but adapted for use with the event loop;
|
2013-11-22 19:34:26 -04:00
|
|
|
|
|
|
|
* coroutines and tasks based on ``yield from`` (:PEP:`380`), to help write
|
|
|
|
concurrent code in a sequential fashion;
|
|
|
|
|
2014-02-09 10:07:47 -04:00
|
|
|
* cancellation support for :class:`Future`\s and coroutines;
|
2013-11-22 19:34:26 -04:00
|
|
|
|
2014-02-02 10:03:02 -04:00
|
|
|
* :ref:`synchronization primitives <asyncio-sync>` for use between coroutines in
|
2013-11-22 19:34:26 -04:00
|
|
|
a single thread, mimicking those in the :mod:`threading` module;
|
|
|
|
|
2013-11-22 19:45:02 -04: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 09:23:51 -04: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.
|
|
|
|
|
2014-07-24 03:59:02 -03:00
|
|
|
Table of contents:
|
2013-11-22 19:34:26 -04:00
|
|
|
|
2013-12-02 20:08:00 -04:00
|
|
|
.. toctree::
|
|
|
|
:maxdepth: 3
|
|
|
|
|
|
|
|
asyncio-eventloop.rst
|
2014-07-08 18:42:38 -03:00
|
|
|
asyncio-eventloops.rst
|
2013-12-02 20:08:00 -04:00
|
|
|
asyncio-task.rst
|
|
|
|
asyncio-protocol.rst
|
2014-01-23 06:05:01 -04:00
|
|
|
asyncio-stream.rst
|
2014-02-02 17:43:39 -04:00
|
|
|
asyncio-subprocess.rst
|
2013-12-02 20:08:00 -04:00
|
|
|
asyncio-sync.rst
|
2015-02-25 08:55:43 -04:00
|
|
|
asyncio-queue.rst
|
2014-01-16 13:58:01 -04:00
|
|
|
asyncio-dev.rst
|
2013-11-22 19:34:26 -04:00
|
|
|
|
2013-12-03 10:04:36 -04:00
|
|
|
.. seealso::
|
|
|
|
|
2014-07-24 03:59:02 -03:00
|
|
|
The :mod:`asyncio` module was designed in :PEP:`3156`. For a
|
2013-12-03 10:04:36 -04:00
|
|
|
motivational primer on transports and protocols, see :PEP:`3153`.
|
|
|
|
|