1 .. currentmodule:: asyncio 2 3 4 ==================== 5 High-level API Index 6 ==================== 7 8 This page lists all high-level async/await enabled asyncio APIs. 9 10 11 Tasks 12 ===== 13 14 Utilities to run asyncio programs, create Tasks, and 15 await on multiple things with timeouts. 16 17 .. list-table:: 18 :widths: 50 50 19 :class: full-width-table 20 21 * - :func:`run` 22 - Create event loop, run a coroutine, close the loop. 23 24 * - :func:`create_task` 25 - Start an asyncio Task. 26 27 * - ``await`` :func:`sleep` 28 - Sleep for a number of seconds. 29 30 * - ``await`` :func:`gather` 31 - Schedule and wait for things concurrently. 32 33 * - ``await`` :func:`wait_for` 34 - Run with a timeout. 35 36 * - ``await`` :func:`shield` 37 - Shield from cancellation. 38 39 * - ``await`` :func:`wait` 40 - Monitor for completion. 41 42 * - :func:`current_task` 43 - Return the current Task. 44 45 * - :func:`all_tasks` 46 - Return all tasks for an event loop. 47 48 * - :class:`Task` 49 - Task object. 50 51 * - :func:`run_coroutine_threadsafe` 52 - Schedule a coroutine from another OS thread. 53 54 * - ``for in`` :func:`as_completed` 55 - Monitor for completion with a ``for`` loop. 56 57 58 .. rubric:: Examples 59 60 * :ref:`Using asyncio.gather() to run things in parallel 61 <asyncio_example_gather>`. 62 63 * :ref:`Using asyncio.wait_for() to enforce a timeout 64 <asyncio_example_waitfor>`. 65 66 * :ref:`Cancellation <asyncio_example_task_cancel>`. 67 68 * :ref:`Using asyncio.sleep() <asyncio_example_sleep>`. 69 70 * See also the main :ref:`Tasks documentation page <coroutine>`. 71 72 73 Queues 74 ====== 75 76 Queues should be used to distribute work amongst multiple asyncio Tasks, 77 implement connection pools, and pub/sub patterns. 78 79 80 .. list-table:: 81 :widths: 50 50 82 :class: full-width-table 83 84 * - :class:`Queue` 85 - A FIFO queue. 86 87 * - :class:`PriorityQueue` 88 - A priority queue. 89 90 * - :class:`LifoQueue` 91 - A LIFO queue. 92 93 94 .. rubric:: Examples 95 96 * :ref:`Using asyncio.Queue to distribute workload between several 97 Tasks <asyncio_example_queue_dist>`. 98 99 * See also the :ref:`Queues documentation page <asyncio-queues>`. 100 101 102 Subprocesses 103 ============ 104 105 Utilities to spawn subprocesses and run shell commands. 106 107 .. list-table:: 108 :widths: 50 50 109 :class: full-width-table 110 111 * - ``await`` :func:`create_subprocess_exec` 112 - Create a subprocess. 113 114 * - ``await`` :func:`create_subprocess_shell` 115 - Run a shell command. 116 117 118 .. rubric:: Examples 119 120 * :ref:`Executing a shell command <asyncio_example_subprocess_shell>`. 121 122 * See also the :ref:`subprocess APIs <asyncio-subprocess>` 123 documentation. 124 125 126 Streams 127 ======= 128 129 High-level APIs to work with network IO. 130 131 .. list-table:: 132 :widths: 50 50 133 :class: full-width-table 134 135 * - ``await`` :func:`open_connection` 136 - Establish a TCP connection. 137 138 * - ``await`` :func:`open_unix_connection` 139 - Establish a Unix socket connection. 140 141 * - ``await`` :func:`start_server` 142 - Start a TCP server. 143 144 * - ``await`` :func:`start_unix_server` 145 - Start a Unix socket server. 146 147 * - :class:`StreamReader` 148 - High-level async/await object to receive network data. 149 150 * - :class:`StreamWriter` 151 - High-level async/await object to send network data. 152 153 154 .. rubric:: Examples 155 156 * :ref:`Example TCP client <asyncio_example_stream>`. 157 158 * See also the :ref:`streams APIs <asyncio-streams>` 159 documentation. 160 161 162 Synchronization 163 =============== 164 165 Threading-like synchronization primitives that can be used in Tasks. 166 167 .. list-table:: 168 :widths: 50 50 169 :class: full-width-table 170 171 * - :class:`Lock` 172 - A mutex lock. 173 174 * - :class:`Event` 175 - An event object. 176 177 * - :class:`Condition` 178 - A condition object. 179 180 * - :class:`Semaphore` 181 - A semaphore. 182 183 * - :class:`BoundedSemaphore` 184 - A bounded semaphore. 185 186 187 .. rubric:: Examples 188 189 * :ref:`Using asyncio.Event <asyncio_example_sync_event>`. 190 191 * See also the documentation of asyncio 192 :ref:`synchronization primitives <asyncio-sync>`. 193 194 195 Exceptions 196 ========== 197 198 .. list-table:: 199 :widths: 50 50 200 :class: full-width-table 201 202 203 * - :exc:`asyncio.TimeoutError` 204 - Raised on timeout by functions like :func:`wait_for`. 205 Keep in mind that ``asyncio.TimeoutError`` is **unrelated** 206 to the built-in :exc:`TimeoutError` exception. 207 208 * - :exc:`asyncio.CancelledError` 209 - Raised when a Task is cancelled. See also :meth:`Task.cancel`. 210 211 212 .. rubric:: Examples 213 214 * :ref:`Handling CancelledError to run code on cancellation request 215 <asyncio_example_task_cancel>`. 216 217 * See also the full list of 218 :ref:`asyncio-specific exceptions <asyncio-exceptions>`. 219