Back to Cpython

High-level API Index

Doc/library/asyncio-api-index.rst

3.15.0a85.0 KB
Original Source

.. currentmodule:: asyncio

==================== High-level API Index

This page lists all high-level async/await enabled asyncio APIs.

Tasks

Utilities to run asyncio programs, create Tasks, and await on multiple things with timeouts.

.. list-table:: :widths: 50 50 :class: full-width-table

* - :func:`run`
  - Create event loop, run a coroutine, close the loop.

* - :class:`Runner`
  - A context manager that simplifies multiple async function calls.

* - :class:`Task`
  - Task object.

* - :class:`TaskGroup`
  - A context manager that holds a group of tasks. Provides
    a convenient and reliable way to wait for all tasks in the group to
    finish.

* - :func:`create_task`
  - Start an asyncio Task, then returns it.

* - :func:`current_task`
  - Return the current Task.

* - :func:`all_tasks`
  - Return all tasks that are not yet finished for an event loop.

* - ``await`` :func:`sleep`
  - Sleep for a number of seconds.

* - ``await`` :func:`gather`
  - Schedule and wait for things concurrently.

* - ``await`` :func:`wait_for`
  - Run with a timeout.

* - ``await`` :func:`shield`
  - Shield from cancellation.

* - ``await`` :func:`wait`
  - Monitor for completion.

* - :func:`timeout`
  - Run with a timeout. Useful in cases when ``wait_for`` is not suitable.

* - :func:`to_thread`
  - Asynchronously run a function in a separate OS thread.

* - :func:`run_coroutine_threadsafe`
  - Schedule a coroutine from another OS thread.

* - ``for in`` :func:`as_completed`
  - Monitor for completion with a ``for`` loop.

.. rubric:: Examples

  • :ref:Using asyncio.gather() to run things in parallel <asyncio_example_gather>.

  • :ref:Using asyncio.wait_for() to enforce a timeout <asyncio_example_waitfor>.

  • :ref:Cancellation <asyncio_example_task_cancel>.

  • :ref:Using asyncio.sleep() <asyncio_example_sleep>.

  • See also the main :ref:Tasks documentation page <coroutine>.

Queues

Queues should be used to distribute work amongst multiple asyncio Tasks, implement connection pools, and pub/sub patterns.

.. list-table:: :widths: 50 50 :class: full-width-table

* - :class:`Queue`
  - A FIFO queue.

* - :class:`PriorityQueue`
  - A priority queue.

* - :class:`LifoQueue`
  - A LIFO queue.

.. rubric:: Examples

  • :ref:Using asyncio.Queue to distribute workload between several Tasks <asyncio_example_queue_dist>.

  • See also the :ref:Queues documentation page <asyncio-queues>.

Subprocesses

Utilities to spawn subprocesses and run shell commands.

.. list-table:: :widths: 50 50 :class: full-width-table

* - ``await`` :func:`create_subprocess_exec`
  - Create a subprocess.

* - ``await`` :func:`create_subprocess_shell`
  - Run a shell command.

.. rubric:: Examples

  • :ref:Executing a shell command <asyncio_example_subprocess_shell>.

  • See also the :ref:subprocess APIs <asyncio-subprocess> documentation.

Streams

High-level APIs to work with network IO.

.. list-table:: :widths: 50 50 :class: full-width-table

* - ``await`` :func:`open_connection`
  -  Establish a TCP connection.

* - ``await`` :func:`open_unix_connection`
  -  Establish a Unix socket connection.

* - ``await`` :func:`start_server`
  - Start a TCP server.

* - ``await`` :func:`start_unix_server`
  - Start a Unix socket server.

* - :class:`StreamReader`
  - High-level async/await object to receive network data.

* - :class:`StreamWriter`
  - High-level async/await object to send network data.

.. rubric:: Examples

  • :ref:Example TCP client <asyncio_example_stream>.

  • See also the :ref:streams APIs <asyncio-streams> documentation.

Synchronization

Threading-like synchronization primitives that can be used in Tasks.

.. list-table:: :widths: 50 50 :class: full-width-table

* - :class:`Lock`
  - A mutex lock.

* - :class:`Event`
  - An event object.

* - :class:`Condition`
  - A condition object.

* - :class:`Semaphore`
  - A semaphore.

* - :class:`BoundedSemaphore`
  - A bounded semaphore.

* - :class:`Barrier`
  - A barrier object.

.. rubric:: Examples

  • :ref:Using asyncio.Event <asyncio_example_sync_event>.

  • :ref:Using asyncio.Barrier <asyncio_example_barrier>.

  • See also the documentation of asyncio :ref:synchronization primitives <asyncio-sync>.

Exceptions

.. list-table:: :widths: 50 50 :class: full-width-table

* - :exc:`asyncio.CancelledError`
  - Raised when a Task is cancelled. See also :meth:`Task.cancel`.

* - :exc:`asyncio.BrokenBarrierError`
  - Raised when a Barrier is broken. See also :meth:`Barrier.wait`.

.. rubric:: Examples

  • :ref:Handling CancelledError to run code on cancellation request <asyncio_example_task_cancel>.

  • See also the full list of :ref:asyncio-specific exceptions <asyncio-exceptions>.