| .. 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. |