Back to Kbengine

Low-level API Index

kbe/src/lib/python/Doc/library/asyncio-llapi-index.rst

2.5.1213.9 KB
Original Source

.. currentmodule:: asyncio

=================== Low-level API Index

This page lists all low-level asyncio APIs.

Obtaining the Event Loop

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

* - :func:`asyncio.get_running_loop`
  - The **preferred** function to get the running event loop.

* - :func:`asyncio.get_event_loop`
  - Get an event loop instance (current or via the policy).

* - :func:`asyncio.set_event_loop`
  - Set the event loop as current via the current policy.

* - :func:`asyncio.new_event_loop`
  - Create a new event loop.

.. rubric:: Examples

  • :ref:Using asyncio.get_running_loop() <asyncio_example_future>.

Event Loop Methods

See also the main documentation section about the :ref:event loop methods <asyncio-event-loop>.

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

* - :meth:`loop.run_until_complete`
  - Run a Future/Task/awaitable until complete.

* - :meth:`loop.run_forever`
  - Run the event loop forever.

* - :meth:`loop.stop`
  - Stop the event loop.

* - :meth:`loop.close`
  - Close the event loop.

* - :meth:`loop.is_running()`
  - Return ``True`` if the event loop is running.

* - :meth:`loop.is_closed()`
  - Return ``True`` if the event loop is closed.

* - ``await`` :meth:`loop.shutdown_asyncgens`
  - Close asynchronous generators.

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

* - :meth:`loop.set_debug`
  - Enable or disable the debug mode.

* - :meth:`loop.get_debug`
  - Get the current debug mode.

.. rubric:: Scheduling Callbacks .. list-table:: :widths: 50 50 :class: full-width-table

* - :meth:`loop.call_soon`
  - Invoke a callback soon.

* - :meth:`loop.call_soon_threadsafe`
  - A thread-safe variant of :meth:`loop.call_soon`.

* - :meth:`loop.call_later`
  - Invoke a callback *after* the given time.

* - :meth:`loop.call_at`
  - Invoke a callback *at* the given time.

.. rubric:: Thread/Process Pool .. list-table:: :widths: 50 50 :class: full-width-table

* - ``await`` :meth:`loop.run_in_executor`
  - Run a CPU-bound or other blocking function in
    a :mod:`concurrent.futures` executor.

* - :meth:`loop.set_default_executor`
  - Set the default executor for :meth:`loop.run_in_executor`.

.. rubric:: Tasks and Futures .. list-table:: :widths: 50 50 :class: full-width-table

* - :meth:`loop.create_future`
  - Create a :class:`Future` object.

* - :meth:`loop.create_task`
  - Schedule coroutine as a :class:`Task`.

* - :meth:`loop.set_task_factory`
  - Set a factory used by :meth:`loop.create_task` to
    create :class:`Tasks <Task>`.

* - :meth:`loop.get_task_factory`
  - Get the factory :meth:`loop.create_task` uses
    to create :class:`Tasks <Task>`.

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

* - ``await`` :meth:`loop.getaddrinfo`
  - Asynchronous version of :meth:`socket.getaddrinfo`.

* - ``await`` :meth:`loop.getnameinfo`
  - Asynchronous version of :meth:`socket.getnameinfo`.

.. rubric:: Networking and IPC .. list-table:: :widths: 50 50 :class: full-width-table

* - ``await`` :meth:`loop.create_connection`
  - Open a TCP connection.

* - ``await`` :meth:`loop.create_server`
  - Create a TCP server.

* - ``await`` :meth:`loop.create_unix_connection`
  - Open a Unix socket connection.

* - ``await`` :meth:`loop.create_unix_server`
  - Create a Unix socket server.

* - ``await`` :meth:`loop.connect_accepted_socket`
  - Wrap a :class:`~socket.socket` into a ``(transport, protocol)``
    pair.

* - ``await`` :meth:`loop.create_datagram_endpoint`
  - Open a datagram (UDP) connection.

* - ``await`` :meth:`loop.sendfile`
  - Send a file over a transport.

* - ``await`` :meth:`loop.start_tls`
  - Upgrade an existing connection to TLS.

* - ``await`` :meth:`loop.connect_read_pipe`
  - Wrap a read end of a pipe into a ``(transport, protocol)`` pair.

* - ``await`` :meth:`loop.connect_write_pipe`
  - Wrap a write end of a pipe into a ``(transport, protocol)`` pair.

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

* - ``await`` :meth:`loop.sock_recv`
  - Receive data from the :class:`~socket.socket`.

* - ``await`` :meth:`loop.sock_recv_into`
  - Receive data from the :class:`~socket.socket` into a buffer.

* - ``await`` :meth:`loop.sock_sendall`
  - Send data to the :class:`~socket.socket`.

* - ``await`` :meth:`loop.sock_connect`
  - Connect the :class:`~socket.socket`.

* - ``await`` :meth:`loop.sock_accept`
  - Accept a :class:`~socket.socket` connection.

* - ``await`` :meth:`loop.sock_sendfile`
  - Send a file over the :class:`~socket.socket`.

* - :meth:`loop.add_reader`
  - Start watching a file descriptor for read availability.

* - :meth:`loop.remove_reader`
  - Stop watching a file descriptor for read availability.

* - :meth:`loop.add_writer`
  - Start watching a file descriptor for write availability.

* - :meth:`loop.remove_writer`
  - Stop watching a file descriptor for write availability.

.. rubric:: Unix Signals .. list-table:: :widths: 50 50 :class: full-width-table

* - :meth:`loop.add_signal_handler`
  - Add a handler for a :mod:`signal`.

* - :meth:`loop.remove_signal_handler`
  - Remove a handler for a :mod:`signal`.

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

* - :meth:`loop.subprocess_exec`
  - Spawn a subprocess.

* - :meth:`loop.subprocess_shell`
  - Spawn a subprocess from a shell command.

.. rubric:: Error Handling .. list-table:: :widths: 50 50 :class: full-width-table

* - :meth:`loop.call_exception_handler`
  - Call the exception handler.

* - :meth:`loop.set_exception_handler`
  - Set a new exception handler.

* - :meth:`loop.get_exception_handler`
  - Get the current exception handler.

* - :meth:`loop.default_exception_handler`
  - The default exception handler implementation.

.. rubric:: Examples

  • :ref:Using asyncio.get_event_loop() and loop.run_forever() <asyncio_example_lowlevel_helloworld>.

  • :ref:Using loop.call_later() <asyncio_example_call_later>.

  • Using loop.create_connection() to implement :ref:an echo-client <asyncio_example_tcp_echo_client_protocol>.

  • Using loop.create_connection() to :ref:connect a socket <asyncio_example_create_connection>.

  • :ref:Using add_reader() to watch an FD for read events <asyncio_example_watch_fd>.

  • :ref:Using loop.add_signal_handler() <asyncio_example_unix_signals>.

  • :ref:Using loop.subprocess_exec() <asyncio_example_subprocess_proto>.

Transports

All transports implement the following methods:

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

* - :meth:`transport.close() <BaseTransport.close>`
  - Close the transport.

* - :meth:`transport.is_closing() <BaseTransport.is_closing>`
  - Return ``True`` if the transport is closing or is closed.

* - :meth:`transport.get_extra_info() <BaseTransport.get_extra_info>`
  - Request for information about the transport.

* - :meth:`transport.set_protocol() <BaseTransport.set_protocol>`
  - Set a new protocol.

* - :meth:`transport.get_protocol() <BaseTransport.get_protocol>`
  - Return the current protocol.

Transports that can receive data (TCP and Unix connections, pipes, etc). Returned from methods like :meth:loop.create_connection, :meth:loop.create_unix_connection, :meth:loop.connect_read_pipe, etc:

.. rubric:: Read Transports .. list-table:: :widths: 50 50 :class: full-width-table

* - :meth:`transport.is_reading() <ReadTransport.is_reading>`
  - Return ``True`` if the transport is receiving.

* - :meth:`transport.pause_reading() <ReadTransport.pause_reading>`
  - Pause receiving.

* - :meth:`transport.resume_reading() <ReadTransport.resume_reading>`
  - Resume receiving.

Transports that can Send data (TCP and Unix connections, pipes, etc). Returned from methods like :meth:loop.create_connection, :meth:loop.create_unix_connection, :meth:loop.connect_write_pipe, etc:

.. rubric:: Write Transports .. list-table:: :widths: 50 50 :class: full-width-table

* - :meth:`transport.write() <WriteTransport.write>`
  - Write data to the transport.

* - :meth:`transport.writelines() <WriteTransport.writelines>`
  - Write buffers to the transport.

* - :meth:`transport.can_write_eof() <WriteTransport.can_write_eof>`
  - Return :const:`True` if the transport supports sending EOF.

* - :meth:`transport.write_eof() <WriteTransport.write_eof>`
  - Close and send EOF after flushing buffered data.

* - :meth:`transport.abort() <WriteTransport.abort>`
  - Close the transport immediately.

* - :meth:`transport.get_write_buffer_size()
    <WriteTransport.get_write_buffer_size>`
  - Return high and low water marks for write flow control.

* - :meth:`transport.set_write_buffer_limits()
    <WriteTransport.set_write_buffer_limits>`
  - Set new high and low water marks for write flow control.

Transports returned by :meth:loop.create_datagram_endpoint:

.. rubric:: Datagram Transports .. list-table:: :widths: 50 50 :class: full-width-table

* - :meth:`transport.sendto() <DatagramTransport.sendto>`
  - Send data to the remote peer.

* - :meth:`transport.abort() <DatagramTransport.abort>`
  - Close the transport immediately.

Low-level transport abstraction over subprocesses. Returned by :meth:loop.subprocess_exec and :meth:loop.subprocess_shell:

.. rubric:: Subprocess Transports .. list-table:: :widths: 50 50 :class: full-width-table

* - :meth:`transport.get_pid() <SubprocessTransport.get_pid>`
  - Return the subprocess process id.

* - :meth:`transport.get_pipe_transport()
    <SubprocessTransport.get_pipe_transport>`
  - Return the transport for the requested communication pipe
    (*stdin*, *stdout*, or *stderr*).

* - :meth:`transport.get_returncode() <SubprocessTransport.get_returncode>`
  - Return the subprocess return code.

* - :meth:`transport.kill() <SubprocessTransport.kill>`
  - Kill the subprocess.

* - :meth:`transport.send_signal() <SubprocessTransport.send_signal>`
  - Send a signal to the subprocess.

* - :meth:`transport.terminate() <SubprocessTransport.terminate>`
  - Stop the subprocess.

* - :meth:`transport.close() <SubprocessTransport.close>`
  - Kill the subprocess and close all pipes.

Protocols

Protocol classes can implement the following callback methods:

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

* - ``callback`` :meth:`connection_made() <BaseProtocol.connection_made>`
  - Called when a connection is made.

* - ``callback`` :meth:`connection_lost() <BaseProtocol.connection_lost>`
  - Called when the connection is lost or closed.

* - ``callback`` :meth:`pause_writing() <BaseProtocol.pause_writing>`
  - Called when the transport's buffer goes over the high water mark.

* - ``callback`` :meth:`resume_writing() <BaseProtocol.resume_writing>`
  - Called when the transport's buffer drains below the low water mark.

.. rubric:: Streaming Protocols (TCP, Unix Sockets, Pipes) .. list-table:: :widths: 50 50 :class: full-width-table

* - ``callback`` :meth:`data_received() <Protocol.data_received>`
  - Called when some data is received.

* - ``callback`` :meth:`eof_received() <Protocol.eof_received>`
  - Called when an EOF is received.

.. rubric:: Buffered Streaming Protocols .. list-table:: :widths: 50 50 :class: full-width-table

* - ``callback`` :meth:`get_buffer() <BufferedProtocol.get_buffer>`
  - Called to allocate a new receive buffer.

* - ``callback`` :meth:`buffer_updated() <BufferedProtocol.buffer_updated>`
  - Called when the buffer was updated with the received data.

* - ``callback`` :meth:`eof_received() <BufferedProtocol.eof_received>`
  - Called when an EOF is received.

.. rubric:: Datagram Protocols .. list-table:: :widths: 50 50 :class: full-width-table

* - ``callback`` :meth:`datagram_received()
    <DatagramProtocol.datagram_received>`
  - Called when a datagram is received.

* - ``callback`` :meth:`error_received() <DatagramProtocol.error_received>`
  - Called when a previous send or receive operation raises an
    :class:`OSError`.

.. rubric:: Subprocess Protocols .. list-table:: :widths: 50 50 :class: full-width-table

* - ``callback`` :meth:`pipe_data_received()
    <SubprocessProtocol.pipe_data_received>`
  - Called when the child process writes data into its
    *stdout* or *stderr* pipe.

* - ``callback`` :meth:`pipe_connection_lost()
    <SubprocessProtocol.pipe_connection_lost>`
  - Called when one of the pipes communicating with
    the child process is closed.

* - ``callback`` :meth:`process_exited()
    <SubprocessProtocol.process_exited>`
  - Called when the child process has exited.

Event Loop Policies

Policies is a low-level mechanism to alter the behavior of functions like :func:asyncio.get_event_loop. See also the main :ref:policies section <asyncio-policies> for more details.

.. rubric:: Accessing Policies .. list-table:: :widths: 50 50 :class: full-width-table

* - :meth:`asyncio.get_event_loop_policy`
  - Return the current process-wide policy.

* - :meth:`asyncio.set_event_loop_policy`
  - Set a new process-wide policy.

* - :class:`AbstractEventLoopPolicy`
  - Base class for policy objects.