17db96d56Sopenharmony_ci.. currentmodule:: asyncio
27db96d56Sopenharmony_ci
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ci===================
57db96d56Sopenharmony_ciLow-level API Index
67db96d56Sopenharmony_ci===================
77db96d56Sopenharmony_ci
87db96d56Sopenharmony_ciThis page lists all low-level asyncio APIs.
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ciObtaining the Event Loop
127db96d56Sopenharmony_ci========================
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_ci.. list-table::
157db96d56Sopenharmony_ci    :widths: 50 50
167db96d56Sopenharmony_ci    :class: full-width-table
177db96d56Sopenharmony_ci
187db96d56Sopenharmony_ci    * - :func:`asyncio.get_running_loop`
197db96d56Sopenharmony_ci      - The **preferred** function to get the running event loop.
207db96d56Sopenharmony_ci
217db96d56Sopenharmony_ci    * - :func:`asyncio.get_event_loop`
227db96d56Sopenharmony_ci      - Get an event loop instance (running or current via the current policy).
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_ci    * - :func:`asyncio.set_event_loop`
257db96d56Sopenharmony_ci      - Set the event loop as current via the current policy.
267db96d56Sopenharmony_ci
277db96d56Sopenharmony_ci    * - :func:`asyncio.new_event_loop`
287db96d56Sopenharmony_ci      - Create a new event loop.
297db96d56Sopenharmony_ci
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_ci.. rubric:: Examples
327db96d56Sopenharmony_ci
337db96d56Sopenharmony_ci* :ref:`Using asyncio.get_running_loop() <asyncio_example_future>`.
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_ci
367db96d56Sopenharmony_ciEvent Loop Methods
377db96d56Sopenharmony_ci==================
387db96d56Sopenharmony_ci
397db96d56Sopenharmony_ciSee also the main documentation section about the
407db96d56Sopenharmony_ci:ref:`asyncio-event-loop-methods`.
417db96d56Sopenharmony_ci
427db96d56Sopenharmony_ci.. rubric:: Lifecycle
437db96d56Sopenharmony_ci.. list-table::
447db96d56Sopenharmony_ci    :widths: 50 50
457db96d56Sopenharmony_ci    :class: full-width-table
467db96d56Sopenharmony_ci
477db96d56Sopenharmony_ci    * - :meth:`loop.run_until_complete`
487db96d56Sopenharmony_ci      - Run a Future/Task/awaitable until complete.
497db96d56Sopenharmony_ci
507db96d56Sopenharmony_ci    * - :meth:`loop.run_forever`
517db96d56Sopenharmony_ci      - Run the event loop forever.
527db96d56Sopenharmony_ci
537db96d56Sopenharmony_ci    * - :meth:`loop.stop`
547db96d56Sopenharmony_ci      - Stop the event loop.
557db96d56Sopenharmony_ci
567db96d56Sopenharmony_ci    * - :meth:`loop.close`
577db96d56Sopenharmony_ci      - Close the event loop.
587db96d56Sopenharmony_ci
597db96d56Sopenharmony_ci    * - :meth:`loop.is_running()`
607db96d56Sopenharmony_ci      - Return ``True`` if the event loop is running.
617db96d56Sopenharmony_ci
627db96d56Sopenharmony_ci    * - :meth:`loop.is_closed()`
637db96d56Sopenharmony_ci      - Return ``True`` if the event loop is closed.
647db96d56Sopenharmony_ci
657db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.shutdown_asyncgens`
667db96d56Sopenharmony_ci      - Close asynchronous generators.
677db96d56Sopenharmony_ci
687db96d56Sopenharmony_ci
697db96d56Sopenharmony_ci.. rubric:: Debugging
707db96d56Sopenharmony_ci.. list-table::
717db96d56Sopenharmony_ci    :widths: 50 50
727db96d56Sopenharmony_ci    :class: full-width-table
737db96d56Sopenharmony_ci
747db96d56Sopenharmony_ci    * - :meth:`loop.set_debug`
757db96d56Sopenharmony_ci      - Enable or disable the debug mode.
767db96d56Sopenharmony_ci
777db96d56Sopenharmony_ci    * - :meth:`loop.get_debug`
787db96d56Sopenharmony_ci      - Get the current debug mode.
797db96d56Sopenharmony_ci
807db96d56Sopenharmony_ci
817db96d56Sopenharmony_ci.. rubric:: Scheduling Callbacks
827db96d56Sopenharmony_ci.. list-table::
837db96d56Sopenharmony_ci    :widths: 50 50
847db96d56Sopenharmony_ci    :class: full-width-table
857db96d56Sopenharmony_ci
867db96d56Sopenharmony_ci    * - :meth:`loop.call_soon`
877db96d56Sopenharmony_ci      - Invoke a callback soon.
887db96d56Sopenharmony_ci
897db96d56Sopenharmony_ci    * - :meth:`loop.call_soon_threadsafe`
907db96d56Sopenharmony_ci      - A thread-safe variant of :meth:`loop.call_soon`.
917db96d56Sopenharmony_ci
927db96d56Sopenharmony_ci    * - :meth:`loop.call_later`
937db96d56Sopenharmony_ci      - Invoke a callback *after* the given time.
947db96d56Sopenharmony_ci
957db96d56Sopenharmony_ci    * - :meth:`loop.call_at`
967db96d56Sopenharmony_ci      - Invoke a callback *at* the given time.
977db96d56Sopenharmony_ci
987db96d56Sopenharmony_ci
997db96d56Sopenharmony_ci.. rubric:: Thread/Process Pool
1007db96d56Sopenharmony_ci.. list-table::
1017db96d56Sopenharmony_ci    :widths: 50 50
1027db96d56Sopenharmony_ci    :class: full-width-table
1037db96d56Sopenharmony_ci
1047db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.run_in_executor`
1057db96d56Sopenharmony_ci      - Run a CPU-bound or other blocking function in
1067db96d56Sopenharmony_ci        a :mod:`concurrent.futures` executor.
1077db96d56Sopenharmony_ci
1087db96d56Sopenharmony_ci    * - :meth:`loop.set_default_executor`
1097db96d56Sopenharmony_ci      - Set the default executor for :meth:`loop.run_in_executor`.
1107db96d56Sopenharmony_ci
1117db96d56Sopenharmony_ci
1127db96d56Sopenharmony_ci.. rubric:: Tasks and Futures
1137db96d56Sopenharmony_ci.. list-table::
1147db96d56Sopenharmony_ci    :widths: 50 50
1157db96d56Sopenharmony_ci    :class: full-width-table
1167db96d56Sopenharmony_ci
1177db96d56Sopenharmony_ci    * - :meth:`loop.create_future`
1187db96d56Sopenharmony_ci      - Create a :class:`Future` object.
1197db96d56Sopenharmony_ci
1207db96d56Sopenharmony_ci    * - :meth:`loop.create_task`
1217db96d56Sopenharmony_ci      - Schedule coroutine as a :class:`Task`.
1227db96d56Sopenharmony_ci
1237db96d56Sopenharmony_ci    * - :meth:`loop.set_task_factory`
1247db96d56Sopenharmony_ci      - Set a factory used by :meth:`loop.create_task` to
1257db96d56Sopenharmony_ci        create :class:`Tasks <Task>`.
1267db96d56Sopenharmony_ci
1277db96d56Sopenharmony_ci    * - :meth:`loop.get_task_factory`
1287db96d56Sopenharmony_ci      - Get the factory :meth:`loop.create_task` uses
1297db96d56Sopenharmony_ci        to create :class:`Tasks <Task>`.
1307db96d56Sopenharmony_ci
1317db96d56Sopenharmony_ci
1327db96d56Sopenharmony_ci.. rubric:: DNS
1337db96d56Sopenharmony_ci.. list-table::
1347db96d56Sopenharmony_ci    :widths: 50 50
1357db96d56Sopenharmony_ci    :class: full-width-table
1367db96d56Sopenharmony_ci
1377db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.getaddrinfo`
1387db96d56Sopenharmony_ci      - Asynchronous version of :meth:`socket.getaddrinfo`.
1397db96d56Sopenharmony_ci
1407db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.getnameinfo`
1417db96d56Sopenharmony_ci      - Asynchronous version of :meth:`socket.getnameinfo`.
1427db96d56Sopenharmony_ci
1437db96d56Sopenharmony_ci
1447db96d56Sopenharmony_ci.. rubric:: Networking and IPC
1457db96d56Sopenharmony_ci.. list-table::
1467db96d56Sopenharmony_ci    :widths: 50 50
1477db96d56Sopenharmony_ci    :class: full-width-table
1487db96d56Sopenharmony_ci
1497db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.create_connection`
1507db96d56Sopenharmony_ci      - Open a TCP connection.
1517db96d56Sopenharmony_ci
1527db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.create_server`
1537db96d56Sopenharmony_ci      - Create a TCP server.
1547db96d56Sopenharmony_ci
1557db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.create_unix_connection`
1567db96d56Sopenharmony_ci      - Open a Unix socket connection.
1577db96d56Sopenharmony_ci
1587db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.create_unix_server`
1597db96d56Sopenharmony_ci      - Create a Unix socket server.
1607db96d56Sopenharmony_ci
1617db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.connect_accepted_socket`
1627db96d56Sopenharmony_ci      - Wrap a :class:`~socket.socket` into a ``(transport, protocol)``
1637db96d56Sopenharmony_ci        pair.
1647db96d56Sopenharmony_ci
1657db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.create_datagram_endpoint`
1667db96d56Sopenharmony_ci      - Open a datagram (UDP) connection.
1677db96d56Sopenharmony_ci
1687db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.sendfile`
1697db96d56Sopenharmony_ci      - Send a file over a transport.
1707db96d56Sopenharmony_ci
1717db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.start_tls`
1727db96d56Sopenharmony_ci      - Upgrade an existing connection to TLS.
1737db96d56Sopenharmony_ci
1747db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.connect_read_pipe`
1757db96d56Sopenharmony_ci      - Wrap a read end of a pipe into a ``(transport, protocol)`` pair.
1767db96d56Sopenharmony_ci
1777db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.connect_write_pipe`
1787db96d56Sopenharmony_ci      - Wrap a write end of a pipe into a ``(transport, protocol)`` pair.
1797db96d56Sopenharmony_ci
1807db96d56Sopenharmony_ci
1817db96d56Sopenharmony_ci.. rubric:: Sockets
1827db96d56Sopenharmony_ci.. list-table::
1837db96d56Sopenharmony_ci    :widths: 50 50
1847db96d56Sopenharmony_ci    :class: full-width-table
1857db96d56Sopenharmony_ci
1867db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.sock_recv`
1877db96d56Sopenharmony_ci      - Receive data from the :class:`~socket.socket`.
1887db96d56Sopenharmony_ci
1897db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.sock_recv_into`
1907db96d56Sopenharmony_ci      - Receive data from the :class:`~socket.socket` into a buffer.
1917db96d56Sopenharmony_ci
1927db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.sock_recvfrom`
1937db96d56Sopenharmony_ci      - Receive a datagram from the :class:`~socket.socket`.
1947db96d56Sopenharmony_ci
1957db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.sock_recvfrom_into`
1967db96d56Sopenharmony_ci      - Receive a datagram from the :class:`~socket.socket` into a buffer.
1977db96d56Sopenharmony_ci
1987db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.sock_sendall`
1997db96d56Sopenharmony_ci      - Send data to the :class:`~socket.socket`.
2007db96d56Sopenharmony_ci
2017db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.sock_sendto`
2027db96d56Sopenharmony_ci      - Send a datagram via the :class:`~socket.socket` to the given address.
2037db96d56Sopenharmony_ci
2047db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.sock_connect`
2057db96d56Sopenharmony_ci      - Connect the :class:`~socket.socket`.
2067db96d56Sopenharmony_ci
2077db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.sock_accept`
2087db96d56Sopenharmony_ci      - Accept a :class:`~socket.socket` connection.
2097db96d56Sopenharmony_ci
2107db96d56Sopenharmony_ci    * - ``await`` :meth:`loop.sock_sendfile`
2117db96d56Sopenharmony_ci      - Send a file over the :class:`~socket.socket`.
2127db96d56Sopenharmony_ci
2137db96d56Sopenharmony_ci    * - :meth:`loop.add_reader`
2147db96d56Sopenharmony_ci      - Start watching a file descriptor for read availability.
2157db96d56Sopenharmony_ci
2167db96d56Sopenharmony_ci    * - :meth:`loop.remove_reader`
2177db96d56Sopenharmony_ci      - Stop watching a file descriptor for read availability.
2187db96d56Sopenharmony_ci
2197db96d56Sopenharmony_ci    * - :meth:`loop.add_writer`
2207db96d56Sopenharmony_ci      - Start watching a file descriptor for write availability.
2217db96d56Sopenharmony_ci
2227db96d56Sopenharmony_ci    * - :meth:`loop.remove_writer`
2237db96d56Sopenharmony_ci      - Stop watching a file descriptor for write availability.
2247db96d56Sopenharmony_ci
2257db96d56Sopenharmony_ci
2267db96d56Sopenharmony_ci.. rubric:: Unix Signals
2277db96d56Sopenharmony_ci.. list-table::
2287db96d56Sopenharmony_ci    :widths: 50 50
2297db96d56Sopenharmony_ci    :class: full-width-table
2307db96d56Sopenharmony_ci
2317db96d56Sopenharmony_ci    * - :meth:`loop.add_signal_handler`
2327db96d56Sopenharmony_ci      - Add a handler for a :mod:`signal`.
2337db96d56Sopenharmony_ci
2347db96d56Sopenharmony_ci    * - :meth:`loop.remove_signal_handler`
2357db96d56Sopenharmony_ci      - Remove a handler for a :mod:`signal`.
2367db96d56Sopenharmony_ci
2377db96d56Sopenharmony_ci
2387db96d56Sopenharmony_ci.. rubric:: Subprocesses
2397db96d56Sopenharmony_ci.. list-table::
2407db96d56Sopenharmony_ci    :widths: 50 50
2417db96d56Sopenharmony_ci    :class: full-width-table
2427db96d56Sopenharmony_ci
2437db96d56Sopenharmony_ci    * - :meth:`loop.subprocess_exec`
2447db96d56Sopenharmony_ci      - Spawn a subprocess.
2457db96d56Sopenharmony_ci
2467db96d56Sopenharmony_ci    * - :meth:`loop.subprocess_shell`
2477db96d56Sopenharmony_ci      - Spawn a subprocess from a shell command.
2487db96d56Sopenharmony_ci
2497db96d56Sopenharmony_ci
2507db96d56Sopenharmony_ci.. rubric:: Error Handling
2517db96d56Sopenharmony_ci.. list-table::
2527db96d56Sopenharmony_ci    :widths: 50 50
2537db96d56Sopenharmony_ci    :class: full-width-table
2547db96d56Sopenharmony_ci
2557db96d56Sopenharmony_ci    * - :meth:`loop.call_exception_handler`
2567db96d56Sopenharmony_ci      - Call the exception handler.
2577db96d56Sopenharmony_ci
2587db96d56Sopenharmony_ci    * - :meth:`loop.set_exception_handler`
2597db96d56Sopenharmony_ci      - Set a new exception handler.
2607db96d56Sopenharmony_ci
2617db96d56Sopenharmony_ci    * - :meth:`loop.get_exception_handler`
2627db96d56Sopenharmony_ci      - Get the current exception handler.
2637db96d56Sopenharmony_ci
2647db96d56Sopenharmony_ci    * - :meth:`loop.default_exception_handler`
2657db96d56Sopenharmony_ci      - The default exception handler implementation.
2667db96d56Sopenharmony_ci
2677db96d56Sopenharmony_ci
2687db96d56Sopenharmony_ci.. rubric:: Examples
2697db96d56Sopenharmony_ci
2707db96d56Sopenharmony_ci* :ref:`Using asyncio.new_event_loop() and loop.run_forever()
2717db96d56Sopenharmony_ci  <asyncio_example_lowlevel_helloworld>`.
2727db96d56Sopenharmony_ci
2737db96d56Sopenharmony_ci* :ref:`Using loop.call_later() <asyncio_example_call_later>`.
2747db96d56Sopenharmony_ci
2757db96d56Sopenharmony_ci* Using ``loop.create_connection()`` to implement
2767db96d56Sopenharmony_ci  :ref:`an echo-client <asyncio_example_tcp_echo_client_protocol>`.
2777db96d56Sopenharmony_ci
2787db96d56Sopenharmony_ci* Using ``loop.create_connection()`` to
2797db96d56Sopenharmony_ci  :ref:`connect a socket <asyncio_example_create_connection>`.
2807db96d56Sopenharmony_ci
2817db96d56Sopenharmony_ci* :ref:`Using add_reader() to watch an FD for read events
2827db96d56Sopenharmony_ci  <asyncio_example_watch_fd>`.
2837db96d56Sopenharmony_ci
2847db96d56Sopenharmony_ci* :ref:`Using loop.add_signal_handler() <asyncio_example_unix_signals>`.
2857db96d56Sopenharmony_ci
2867db96d56Sopenharmony_ci* :ref:`Using loop.subprocess_exec() <asyncio_example_subprocess_proto>`.
2877db96d56Sopenharmony_ci
2887db96d56Sopenharmony_ci
2897db96d56Sopenharmony_ciTransports
2907db96d56Sopenharmony_ci==========
2917db96d56Sopenharmony_ci
2927db96d56Sopenharmony_ciAll transports implement the following methods:
2937db96d56Sopenharmony_ci
2947db96d56Sopenharmony_ci.. list-table::
2957db96d56Sopenharmony_ci    :widths: 50 50
2967db96d56Sopenharmony_ci    :class: full-width-table
2977db96d56Sopenharmony_ci
2987db96d56Sopenharmony_ci    * - :meth:`transport.close() <BaseTransport.close>`
2997db96d56Sopenharmony_ci      - Close the transport.
3007db96d56Sopenharmony_ci
3017db96d56Sopenharmony_ci    * - :meth:`transport.is_closing() <BaseTransport.is_closing>`
3027db96d56Sopenharmony_ci      - Return ``True`` if the transport is closing or is closed.
3037db96d56Sopenharmony_ci
3047db96d56Sopenharmony_ci    * - :meth:`transport.get_extra_info() <BaseTransport.get_extra_info>`
3057db96d56Sopenharmony_ci      - Request for information about the transport.
3067db96d56Sopenharmony_ci
3077db96d56Sopenharmony_ci    * - :meth:`transport.set_protocol() <BaseTransport.set_protocol>`
3087db96d56Sopenharmony_ci      - Set a new protocol.
3097db96d56Sopenharmony_ci
3107db96d56Sopenharmony_ci    * - :meth:`transport.get_protocol() <BaseTransport.get_protocol>`
3117db96d56Sopenharmony_ci      - Return the current protocol.
3127db96d56Sopenharmony_ci
3137db96d56Sopenharmony_ci
3147db96d56Sopenharmony_ciTransports that can receive data (TCP and Unix connections,
3157db96d56Sopenharmony_cipipes, etc).  Returned from methods like
3167db96d56Sopenharmony_ci:meth:`loop.create_connection`, :meth:`loop.create_unix_connection`,
3177db96d56Sopenharmony_ci:meth:`loop.connect_read_pipe`, etc:
3187db96d56Sopenharmony_ci
3197db96d56Sopenharmony_ci.. rubric:: Read Transports
3207db96d56Sopenharmony_ci.. list-table::
3217db96d56Sopenharmony_ci    :widths: 50 50
3227db96d56Sopenharmony_ci    :class: full-width-table
3237db96d56Sopenharmony_ci
3247db96d56Sopenharmony_ci    * - :meth:`transport.is_reading() <ReadTransport.is_reading>`
3257db96d56Sopenharmony_ci      - Return ``True`` if the transport is receiving.
3267db96d56Sopenharmony_ci
3277db96d56Sopenharmony_ci    * - :meth:`transport.pause_reading() <ReadTransport.pause_reading>`
3287db96d56Sopenharmony_ci      - Pause receiving.
3297db96d56Sopenharmony_ci
3307db96d56Sopenharmony_ci    * - :meth:`transport.resume_reading() <ReadTransport.resume_reading>`
3317db96d56Sopenharmony_ci      - Resume receiving.
3327db96d56Sopenharmony_ci
3337db96d56Sopenharmony_ci
3347db96d56Sopenharmony_ciTransports that can Send data (TCP and Unix connections,
3357db96d56Sopenharmony_cipipes, etc).  Returned from methods like
3367db96d56Sopenharmony_ci:meth:`loop.create_connection`, :meth:`loop.create_unix_connection`,
3377db96d56Sopenharmony_ci:meth:`loop.connect_write_pipe`, etc:
3387db96d56Sopenharmony_ci
3397db96d56Sopenharmony_ci.. rubric:: Write Transports
3407db96d56Sopenharmony_ci.. list-table::
3417db96d56Sopenharmony_ci    :widths: 50 50
3427db96d56Sopenharmony_ci    :class: full-width-table
3437db96d56Sopenharmony_ci
3447db96d56Sopenharmony_ci    * - :meth:`transport.write() <WriteTransport.write>`
3457db96d56Sopenharmony_ci      - Write data to the transport.
3467db96d56Sopenharmony_ci
3477db96d56Sopenharmony_ci    * - :meth:`transport.writelines() <WriteTransport.writelines>`
3487db96d56Sopenharmony_ci      - Write buffers to the transport.
3497db96d56Sopenharmony_ci
3507db96d56Sopenharmony_ci    * - :meth:`transport.can_write_eof() <WriteTransport.can_write_eof>`
3517db96d56Sopenharmony_ci      - Return :const:`True` if the transport supports sending EOF.
3527db96d56Sopenharmony_ci
3537db96d56Sopenharmony_ci    * - :meth:`transport.write_eof() <WriteTransport.write_eof>`
3547db96d56Sopenharmony_ci      - Close and send EOF after flushing buffered data.
3557db96d56Sopenharmony_ci
3567db96d56Sopenharmony_ci    * - :meth:`transport.abort() <WriteTransport.abort>`
3577db96d56Sopenharmony_ci      - Close the transport immediately.
3587db96d56Sopenharmony_ci
3597db96d56Sopenharmony_ci    * - :meth:`transport.get_write_buffer_size()
3607db96d56Sopenharmony_ci        <WriteTransport.get_write_buffer_size>`
3617db96d56Sopenharmony_ci      - Return the current size of the output buffer.
3627db96d56Sopenharmony_ci
3637db96d56Sopenharmony_ci    * - :meth:`transport.get_write_buffer_limits()
3647db96d56Sopenharmony_ci        <WriteTransport.get_write_buffer_limits>`
3657db96d56Sopenharmony_ci      - Return high and low water marks for write flow control.
3667db96d56Sopenharmony_ci
3677db96d56Sopenharmony_ci    * - :meth:`transport.set_write_buffer_limits()
3687db96d56Sopenharmony_ci        <WriteTransport.set_write_buffer_limits>`
3697db96d56Sopenharmony_ci      - Set new high and low water marks for write flow control.
3707db96d56Sopenharmony_ci
3717db96d56Sopenharmony_ci
3727db96d56Sopenharmony_ciTransports returned by :meth:`loop.create_datagram_endpoint`:
3737db96d56Sopenharmony_ci
3747db96d56Sopenharmony_ci.. rubric:: Datagram Transports
3757db96d56Sopenharmony_ci.. list-table::
3767db96d56Sopenharmony_ci    :widths: 50 50
3777db96d56Sopenharmony_ci    :class: full-width-table
3787db96d56Sopenharmony_ci
3797db96d56Sopenharmony_ci    * - :meth:`transport.sendto() <DatagramTransport.sendto>`
3807db96d56Sopenharmony_ci      - Send data to the remote peer.
3817db96d56Sopenharmony_ci
3827db96d56Sopenharmony_ci    * - :meth:`transport.abort() <DatagramTransport.abort>`
3837db96d56Sopenharmony_ci      - Close the transport immediately.
3847db96d56Sopenharmony_ci
3857db96d56Sopenharmony_ci
3867db96d56Sopenharmony_ciLow-level transport abstraction over subprocesses.
3877db96d56Sopenharmony_ciReturned by :meth:`loop.subprocess_exec` and
3887db96d56Sopenharmony_ci:meth:`loop.subprocess_shell`:
3897db96d56Sopenharmony_ci
3907db96d56Sopenharmony_ci.. rubric:: Subprocess Transports
3917db96d56Sopenharmony_ci.. list-table::
3927db96d56Sopenharmony_ci    :widths: 50 50
3937db96d56Sopenharmony_ci    :class: full-width-table
3947db96d56Sopenharmony_ci
3957db96d56Sopenharmony_ci    * - :meth:`transport.get_pid() <SubprocessTransport.get_pid>`
3967db96d56Sopenharmony_ci      - Return the subprocess process id.
3977db96d56Sopenharmony_ci
3987db96d56Sopenharmony_ci    * - :meth:`transport.get_pipe_transport()
3997db96d56Sopenharmony_ci        <SubprocessTransport.get_pipe_transport>`
4007db96d56Sopenharmony_ci      - Return the transport for the requested communication pipe
4017db96d56Sopenharmony_ci        (*stdin*, *stdout*, or *stderr*).
4027db96d56Sopenharmony_ci
4037db96d56Sopenharmony_ci    * - :meth:`transport.get_returncode() <SubprocessTransport.get_returncode>`
4047db96d56Sopenharmony_ci      - Return the subprocess return code.
4057db96d56Sopenharmony_ci
4067db96d56Sopenharmony_ci    * - :meth:`transport.kill() <SubprocessTransport.kill>`
4077db96d56Sopenharmony_ci      - Kill the subprocess.
4087db96d56Sopenharmony_ci
4097db96d56Sopenharmony_ci    * - :meth:`transport.send_signal() <SubprocessTransport.send_signal>`
4107db96d56Sopenharmony_ci      - Send a signal to the subprocess.
4117db96d56Sopenharmony_ci
4127db96d56Sopenharmony_ci    * - :meth:`transport.terminate() <SubprocessTransport.terminate>`
4137db96d56Sopenharmony_ci      - Stop the subprocess.
4147db96d56Sopenharmony_ci
4157db96d56Sopenharmony_ci    * - :meth:`transport.close() <SubprocessTransport.close>`
4167db96d56Sopenharmony_ci      - Kill the subprocess and close all pipes.
4177db96d56Sopenharmony_ci
4187db96d56Sopenharmony_ci
4197db96d56Sopenharmony_ciProtocols
4207db96d56Sopenharmony_ci=========
4217db96d56Sopenharmony_ci
4227db96d56Sopenharmony_ciProtocol classes can implement the following **callback methods**:
4237db96d56Sopenharmony_ci
4247db96d56Sopenharmony_ci.. list-table::
4257db96d56Sopenharmony_ci    :widths: 50 50
4267db96d56Sopenharmony_ci    :class: full-width-table
4277db96d56Sopenharmony_ci
4287db96d56Sopenharmony_ci    * - ``callback`` :meth:`connection_made() <BaseProtocol.connection_made>`
4297db96d56Sopenharmony_ci      - Called when a connection is made.
4307db96d56Sopenharmony_ci
4317db96d56Sopenharmony_ci    * - ``callback`` :meth:`connection_lost() <BaseProtocol.connection_lost>`
4327db96d56Sopenharmony_ci      - Called when the connection is lost or closed.
4337db96d56Sopenharmony_ci
4347db96d56Sopenharmony_ci    * - ``callback`` :meth:`pause_writing() <BaseProtocol.pause_writing>`
4357db96d56Sopenharmony_ci      - Called when the transport's buffer goes over the high water mark.
4367db96d56Sopenharmony_ci
4377db96d56Sopenharmony_ci    * - ``callback`` :meth:`resume_writing() <BaseProtocol.resume_writing>`
4387db96d56Sopenharmony_ci      - Called when the transport's buffer drains below the low water mark.
4397db96d56Sopenharmony_ci
4407db96d56Sopenharmony_ci
4417db96d56Sopenharmony_ci.. rubric:: Streaming Protocols (TCP, Unix Sockets, Pipes)
4427db96d56Sopenharmony_ci.. list-table::
4437db96d56Sopenharmony_ci    :widths: 50 50
4447db96d56Sopenharmony_ci    :class: full-width-table
4457db96d56Sopenharmony_ci
4467db96d56Sopenharmony_ci    * - ``callback`` :meth:`data_received() <Protocol.data_received>`
4477db96d56Sopenharmony_ci      - Called when some data is received.
4487db96d56Sopenharmony_ci
4497db96d56Sopenharmony_ci    * - ``callback`` :meth:`eof_received() <Protocol.eof_received>`
4507db96d56Sopenharmony_ci      - Called when an EOF is received.
4517db96d56Sopenharmony_ci
4527db96d56Sopenharmony_ci
4537db96d56Sopenharmony_ci.. rubric:: Buffered Streaming Protocols
4547db96d56Sopenharmony_ci.. list-table::
4557db96d56Sopenharmony_ci    :widths: 50 50
4567db96d56Sopenharmony_ci    :class: full-width-table
4577db96d56Sopenharmony_ci
4587db96d56Sopenharmony_ci    * - ``callback`` :meth:`get_buffer() <BufferedProtocol.get_buffer>`
4597db96d56Sopenharmony_ci      - Called to allocate a new receive buffer.
4607db96d56Sopenharmony_ci
4617db96d56Sopenharmony_ci    * - ``callback`` :meth:`buffer_updated() <BufferedProtocol.buffer_updated>`
4627db96d56Sopenharmony_ci      - Called when the buffer was updated with the received data.
4637db96d56Sopenharmony_ci
4647db96d56Sopenharmony_ci    * - ``callback`` :meth:`eof_received() <BufferedProtocol.eof_received>`
4657db96d56Sopenharmony_ci      - Called when an EOF is received.
4667db96d56Sopenharmony_ci
4677db96d56Sopenharmony_ci
4687db96d56Sopenharmony_ci.. rubric:: Datagram Protocols
4697db96d56Sopenharmony_ci.. list-table::
4707db96d56Sopenharmony_ci    :widths: 50 50
4717db96d56Sopenharmony_ci    :class: full-width-table
4727db96d56Sopenharmony_ci
4737db96d56Sopenharmony_ci    * - ``callback`` :meth:`datagram_received()
4747db96d56Sopenharmony_ci        <DatagramProtocol.datagram_received>`
4757db96d56Sopenharmony_ci      - Called when a datagram is received.
4767db96d56Sopenharmony_ci
4777db96d56Sopenharmony_ci    * - ``callback`` :meth:`error_received() <DatagramProtocol.error_received>`
4787db96d56Sopenharmony_ci      - Called when a previous send or receive operation raises an
4797db96d56Sopenharmony_ci        :class:`OSError`.
4807db96d56Sopenharmony_ci
4817db96d56Sopenharmony_ci
4827db96d56Sopenharmony_ci.. rubric:: Subprocess Protocols
4837db96d56Sopenharmony_ci.. list-table::
4847db96d56Sopenharmony_ci    :widths: 50 50
4857db96d56Sopenharmony_ci    :class: full-width-table
4867db96d56Sopenharmony_ci
4877db96d56Sopenharmony_ci    * - ``callback`` :meth:`pipe_data_received()
4887db96d56Sopenharmony_ci        <SubprocessProtocol.pipe_data_received>`
4897db96d56Sopenharmony_ci      - Called when the child process writes data into its
4907db96d56Sopenharmony_ci        *stdout* or *stderr* pipe.
4917db96d56Sopenharmony_ci
4927db96d56Sopenharmony_ci    * - ``callback`` :meth:`pipe_connection_lost()
4937db96d56Sopenharmony_ci        <SubprocessProtocol.pipe_connection_lost>`
4947db96d56Sopenharmony_ci      - Called when one of the pipes communicating with
4957db96d56Sopenharmony_ci        the child process is closed.
4967db96d56Sopenharmony_ci
4977db96d56Sopenharmony_ci    * - ``callback`` :meth:`process_exited()
4987db96d56Sopenharmony_ci        <SubprocessProtocol.process_exited>`
4997db96d56Sopenharmony_ci      - Called when the child process has exited.
5007db96d56Sopenharmony_ci
5017db96d56Sopenharmony_ci
5027db96d56Sopenharmony_ciEvent Loop Policies
5037db96d56Sopenharmony_ci===================
5047db96d56Sopenharmony_ci
5057db96d56Sopenharmony_ciPolicies is a low-level mechanism to alter the behavior of
5067db96d56Sopenharmony_cifunctions like :func:`asyncio.get_event_loop`.  See also
5077db96d56Sopenharmony_cithe main :ref:`policies section <asyncio-policies>` for more
5087db96d56Sopenharmony_cidetails.
5097db96d56Sopenharmony_ci
5107db96d56Sopenharmony_ci
5117db96d56Sopenharmony_ci.. rubric:: Accessing Policies
5127db96d56Sopenharmony_ci.. list-table::
5137db96d56Sopenharmony_ci    :widths: 50 50
5147db96d56Sopenharmony_ci    :class: full-width-table
5157db96d56Sopenharmony_ci
5167db96d56Sopenharmony_ci    * - :meth:`asyncio.get_event_loop_policy`
5177db96d56Sopenharmony_ci      - Return the current process-wide policy.
5187db96d56Sopenharmony_ci
5197db96d56Sopenharmony_ci    * - :meth:`asyncio.set_event_loop_policy`
5207db96d56Sopenharmony_ci      - Set a new process-wide policy.
5217db96d56Sopenharmony_ci
5227db96d56Sopenharmony_ci    * - :class:`AbstractEventLoopPolicy`
5237db96d56Sopenharmony_ci      - Base class for policy objects.
524