blob: 2770fa6f8acd9bae2ce90d15bf032d197fb226e6 [file] [log] [blame]
R David Murray6a143812013-12-20 14:37:39 -05001.. currentmodule:: asyncio
Victor Stinnerea3183f2013-12-03 01:08:00 +01002
Victor Stinner9592edb2014-02-02 15:03:02 +01003.. _asyncio-event-loop:
Victor Stinnerea3183f2013-12-03 01:08:00 +01004
Victor Stinneraea82292014-07-08 23:42:38 +02005Base Event Loop
6===============
Victor Stinnerea3183f2013-12-03 01:08:00 +01007
lf627d2c82017-07-25 17:03:51 -06008**Source code:** :source:`Lib/asyncio/events.py`
9
Victor Stinnerea3183f2013-12-03 01:08:00 +010010The event loop is the central execution device provided by :mod:`asyncio`.
Zachary Ware5e580da2015-08-27 15:54:39 -050011It provides multiple facilities, including:
Victor Stinnerea3183f2013-12-03 01:08:00 +010012
Eli Benderskyb73c8332014-02-09 06:07:47 -080013* Registering, executing and cancelling delayed calls (timeouts).
Victor Stinnerea3183f2013-12-03 01:08:00 +010014
Victor Stinner9592edb2014-02-02 15:03:02 +010015* Creating client and server :ref:`transports <asyncio-transport>` for various
Eli Benderskyb73c8332014-02-09 06:07:47 -080016 kinds of communication.
Victor Stinnerea3183f2013-12-03 01:08:00 +010017
Eli Bendersky136fea22014-02-09 06:55:58 -080018* Launching subprocesses and the associated :ref:`transports
19 <asyncio-transport>` for communication with an external program.
Victor Stinnerea3183f2013-12-03 01:08:00 +010020
Eli Benderskyb73c8332014-02-09 06:07:47 -080021* Delegating costly function calls to a pool of threads.
Victor Stinnerea3183f2013-12-03 01:08:00 +010022
Victor Stinneraea82292014-07-08 23:42:38 +020023.. class:: BaseEventLoop
Eli Bendersky136fea22014-02-09 06:55:58 -080024
Guido van Rossumf68afd82016-08-08 09:41:21 -070025 This class is an implementation detail. It is a subclass of
26 :class:`AbstractEventLoop` and may be a base class of concrete
27 event loop implementations found in :mod:`asyncio`. It should not
28 be used directly; use :class:`AbstractEventLoop` instead.
29 ``BaseEventLoop`` should not be subclassed by third-party code; the
30 internal interface is not stable.
31
32.. class:: AbstractEventLoop
33
34 Abstract base class of event loops.
Victor Stinnerea3183f2013-12-03 01:08:00 +010035
Victor Stinner83704962015-02-25 14:24:15 +010036 This class is :ref:`not thread safe <asyncio-multithreading>`.
37
Victor Stinnerea3183f2013-12-03 01:08:00 +010038Run an event loop
39-----------------
40
Guido van Rossumf68afd82016-08-08 09:41:21 -070041.. method:: AbstractEventLoop.run_forever()
Victor Stinnerea3183f2013-12-03 01:08:00 +010042
Guido van Rossum41f69f42015-11-19 13:28:47 -080043 Run until :meth:`stop` is called. If :meth:`stop` is called before
44 :meth:`run_forever()` is called, this polls the I/O selector once
45 with a timeout of zero, runs all callbacks scheduled in response to
46 I/O events (and those that were already scheduled), and then exits.
47 If :meth:`stop` is called while :meth:`run_forever` is running,
48 this will run the current batch of callbacks and then exit. Note
49 that callbacks scheduled by callbacks will not run in that case;
50 they will run the next time :meth:`run_forever` is called.
51
Guido van Rossum82f9fea2015-11-19 13:33:34 -080052 .. versionchanged:: 3.5.1
Victor Stinnerea3183f2013-12-03 01:08:00 +010053
Guido van Rossumf68afd82016-08-08 09:41:21 -070054.. method:: AbstractEventLoop.run_until_complete(future)
Victor Stinnerea3183f2013-12-03 01:08:00 +010055
Victor Stinner99c2ab42013-12-03 19:17:25 +010056 Run until the :class:`Future` is done.
Victor Stinnerea3183f2013-12-03 01:08:00 +010057
Victor Stinner530ef2f2014-07-08 12:39:10 +020058 If the argument is a :ref:`coroutine object <coroutine>`, it is wrapped by
Yury Selivanov04356e12015-06-30 22:13:22 -040059 :func:`ensure_future`.
Victor Stinnerea3183f2013-12-03 01:08:00 +010060
61 Return the Future's result, or raise its exception.
62
Guido van Rossumf68afd82016-08-08 09:41:21 -070063.. method:: AbstractEventLoop.is_running()
Victor Stinnerea3183f2013-12-03 01:08:00 +010064
65 Returns running status of event loop.
66
Guido van Rossumf68afd82016-08-08 09:41:21 -070067.. method:: AbstractEventLoop.stop()
Victor Stinnerea3183f2013-12-03 01:08:00 +010068
69 Stop running the event loop.
70
Guido van Rossum41f69f42015-11-19 13:28:47 -080071 This causes :meth:`run_forever` to exit at the next suitable
72 opportunity (see there for more details).
73
Guido van Rossum82f9fea2015-11-19 13:33:34 -080074 .. versionchanged:: 3.5.1
Victor Stinnerea3183f2013-12-03 01:08:00 +010075
Guido van Rossumf68afd82016-08-08 09:41:21 -070076.. method:: AbstractEventLoop.is_closed()
Victor Stinnerbb2fc5b2014-06-10 10:23:10 +020077
78 Returns ``True`` if the event loop was closed.
79
80 .. versionadded:: 3.4.2
81
Guido van Rossumf68afd82016-08-08 09:41:21 -070082.. method:: AbstractEventLoop.close()
Victor Stinnerea3183f2013-12-03 01:08:00 +010083
Guido van Rossum41f69f42015-11-19 13:28:47 -080084 Close the event loop. The loop must not be running. Pending
85 callbacks will be lost.
Victor Stinnerea3183f2013-12-03 01:08:00 +010086
87 This clears the queues and shuts down the executor, but does not wait for
88 the executor to finish.
89
90 This is idempotent and irreversible. No other methods should be called after
91 this one.
92
Yury Selivanov03660042016-12-15 17:36:05 -050093
94.. coroutinemethod:: AbstractEventLoop.shutdown_asyncgens()
95
96 Schedule all currently open :term:`asynchronous generator` objects to
97 close with an :meth:`~agen.aclose()` call. After calling this method,
98 the event loop will issue a warning whenever a new asynchronous generator
99 is iterated. Should be used to finalize all scheduled asynchronous
100 generators reliably. Example::
101
102 try:
103 loop.run_forever()
104 finally:
105 loop.run_until_complete(loop.shutdown_asyncgens())
106 loop.close()
107
108 .. versionadded:: 3.6
109
110
Victor Stinner8464c242014-11-28 13:15:41 +0100111.. _asyncio-pass-keywords:
Victor Stinnerea3183f2013-12-03 01:08:00 +0100112
113Calls
114-----
115
Victor Stinner8464c242014-11-28 13:15:41 +0100116Most :mod:`asyncio` functions don't accept keywords. If you want to pass
117keywords to your callback, use :func:`functools.partial`. For example,
118``loop.call_soon(functools.partial(print, "Hello", flush=True))`` will call
119``print("Hello", flush=True)``.
120
121.. note::
122 :func:`functools.partial` is better than ``lambda`` functions, because
123 :mod:`asyncio` can inspect :func:`functools.partial` object to display
124 parameters in debug mode, whereas ``lambda`` functions have a poor
125 representation.
126
Guido van Rossumf68afd82016-08-08 09:41:21 -0700127.. method:: AbstractEventLoop.call_soon(callback, \*args)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100128
Victor Stinner4d5115c2014-12-15 17:50:55 +0100129 Arrange for a callback to be called as soon as possible. The callback is
130 called after :meth:`call_soon` returns, when control returns to the event
131 loop.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100132
Serhiy Storchaka4ecfa452016-05-16 09:31:54 +0300133 This operates as a :abbr:`FIFO (first-in, first-out)` queue, callbacks
134 are called in the order in which they are registered. Each callback
135 will be called exactly once.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100136
137 Any positional arguments after the callback will be passed to the
138 callback when it is called.
139
Yury Selivanov1096f762015-06-25 13:49:52 -0400140 An instance of :class:`asyncio.Handle` is returned, which can be
141 used to cancel the callback.
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500142
Victor Stinner8464c242014-11-28 13:15:41 +0100143 :ref:`Use functools.partial to pass keywords to the callback
144 <asyncio-pass-keywords>`.
145
Guido van Rossumf68afd82016-08-08 09:41:21 -0700146.. method:: AbstractEventLoop.call_soon_threadsafe(callback, \*args)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100147
148 Like :meth:`call_soon`, but thread safe.
149
Victor Stinner83704962015-02-25 14:24:15 +0100150 See the :ref:`concurrency and multithreading <asyncio-multithreading>`
151 section of the documentation.
152
Victor Stinnerea3183f2013-12-03 01:08:00 +0100153
Victor Stinner45b27ed2014-02-01 02:36:43 +0100154.. _asyncio-delayed-calls:
155
Victor Stinnerea3183f2013-12-03 01:08:00 +0100156Delayed calls
157-------------
158
159The event loop has its own internal clock for computing timeouts.
160Which clock is used depends on the (platform-specific) event loop
161implementation; ideally it is a monotonic clock. This will generally be
162a different clock than :func:`time.time`.
163
Victor Stinnerfd9d3742014-02-18 09:37:43 +0100164.. note::
165
166 Timeouts (relative *delay* or absolute *when*) should not exceed one day.
167
Victor Stinner45b27ed2014-02-01 02:36:43 +0100168
Guido van Rossumf68afd82016-08-08 09:41:21 -0700169.. method:: AbstractEventLoop.call_later(delay, callback, *args)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100170
171 Arrange for the *callback* to be called after the given *delay*
172 seconds (either an int or float).
173
Miss Islington (bot)71a0b0e2018-02-01 11:56:03 -0800174 An instance of :class:`asyncio.TimerHandle` is returned, which can be
Yury Selivanov1096f762015-06-25 13:49:52 -0400175 used to cancel the callback.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100176
177 *callback* will be called exactly once per call to :meth:`call_later`.
178 If two callbacks are scheduled for exactly the same time, it is
179 undefined which will be called first.
180
181 The optional positional *args* will be passed to the callback when it
182 is called. If you want the callback to be called with some named
183 arguments, use a closure or :func:`functools.partial`.
184
Victor Stinner8464c242014-11-28 13:15:41 +0100185 :ref:`Use functools.partial to pass keywords to the callback
186 <asyncio-pass-keywords>`.
187
Guido van Rossumf68afd82016-08-08 09:41:21 -0700188.. method:: AbstractEventLoop.call_at(when, callback, *args)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100189
190 Arrange for the *callback* to be called at the given absolute timestamp
Berker Peksagb5563992014-11-07 19:51:07 +0200191 *when* (an int or float), using the same time reference as
Guido van Rossumf68afd82016-08-08 09:41:21 -0700192 :meth:`AbstractEventLoop.time`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100193
194 This method's behavior is the same as :meth:`call_later`.
195
Miss Islington (bot)71a0b0e2018-02-01 11:56:03 -0800196 An instance of :class:`asyncio.TimerHandle` is returned, which can be
Yury Selivanov1096f762015-06-25 13:49:52 -0400197 used to cancel the callback.
198
Victor Stinner8464c242014-11-28 13:15:41 +0100199 :ref:`Use functools.partial to pass keywords to the callback
200 <asyncio-pass-keywords>`.
201
Guido van Rossumf68afd82016-08-08 09:41:21 -0700202.. method:: AbstractEventLoop.time()
Victor Stinnerea3183f2013-12-03 01:08:00 +0100203
204 Return the current time, as a :class:`float` value, according to the
205 event loop's internal clock.
206
Victor Stinner3e09e322013-12-03 01:22:06 +0100207.. seealso::
208
209 The :func:`asyncio.sleep` function.
210
Victor Stinnerea3183f2013-12-03 01:08:00 +0100211
Yury Selivanov950204d2016-05-16 16:23:00 -0400212Futures
213-------
214
Guido van Rossumf68afd82016-08-08 09:41:21 -0700215.. method:: AbstractEventLoop.create_future()
Yury Selivanov950204d2016-05-16 16:23:00 -0400216
217 Create an :class:`asyncio.Future` object attached to the loop.
218
219 This is a preferred way to create futures in asyncio, as event
220 loop implementations can provide alternative implementations
221 of the Future class (with better performance or instrumentation).
222
223 .. versionadded:: 3.5.2
224
225
Yury Selivanovbb961342015-06-25 11:54:34 -0400226Tasks
227-----
Victor Stinner530ef2f2014-07-08 12:39:10 +0200228
Guido van Rossumf68afd82016-08-08 09:41:21 -0700229.. method:: AbstractEventLoop.create_task(coro)
Victor Stinner530ef2f2014-07-08 12:39:10 +0200230
231 Schedule the execution of a :ref:`coroutine object <coroutine>`: wrap it in
232 a future. Return a :class:`Task` object.
233
234 Third-party event loops can use their own subclass of :class:`Task` for
235 interoperability. In this case, the result type is a subclass of
236 :class:`Task`.
237
Victor Stinner530ef2f2014-07-08 12:39:10 +0200238 .. versionadded:: 3.4.2
239
Guido van Rossumf68afd82016-08-08 09:41:21 -0700240.. method:: AbstractEventLoop.set_task_factory(factory)
Yury Selivanov71854612015-05-11 16:28:27 -0400241
242 Set a task factory that will be used by
Guido van Rossumf68afd82016-08-08 09:41:21 -0700243 :meth:`AbstractEventLoop.create_task`.
Yury Selivanov71854612015-05-11 16:28:27 -0400244
245 If *factory* is ``None`` the default task factory will be set.
246
247 If *factory* is a *callable*, it should have a signature matching
248 ``(loop, coro)``, where *loop* will be a reference to the active
249 event loop, *coro* will be a coroutine object. The callable
250 must return an :class:`asyncio.Future` compatible object.
251
252 .. versionadded:: 3.4.4
253
Guido van Rossumf68afd82016-08-08 09:41:21 -0700254.. method:: AbstractEventLoop.get_task_factory()
Yury Selivanov71854612015-05-11 16:28:27 -0400255
256 Return a task factory, or ``None`` if the default one is in use.
257
258 .. versionadded:: 3.4.4
259
Victor Stinner530ef2f2014-07-08 12:39:10 +0200260
Victor Stinnerea3183f2013-12-03 01:08:00 +0100261Creating connections
Victor Stinner0c6f1ca2013-12-03 01:46:39 +0100262--------------------
Victor Stinnerea3183f2013-12-03 01:08:00 +0100263
Andrew Svetlov51eb1c62017-12-20 20:24:43 +0200264.. coroutinemethod:: AbstractEventLoop.create_connection(protocol_factory, host=None, port=None, \*, ssl=None, family=0, proto=0, flags=0, sock=None, local_addr=None, server_hostname=None, ssl_handshake_timeout=None)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100265
266 Create a streaming transport connection to a given Internet *host* and
Victor Stinnera6919aa2014-02-19 13:32:34 +0100267 *port*: socket family :py:data:`~socket.AF_INET` or
268 :py:data:`~socket.AF_INET6` depending on *host* (or *family* if specified),
269 socket type :py:data:`~socket.SOCK_STREAM`. *protocol_factory* must be a
270 callable returning a :ref:`protocol <asyncio-protocol>` instance.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100271
Yury Selivanov19a44f62017-12-14 20:53:26 -0500272 This method will try to establish the connection in the background.
273 When successful, it returns a ``(transport, protocol)`` pair.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100274
275 The chronological synopsis of the underlying operation is as follows:
276
Victor Stinner9592edb2014-02-02 15:03:02 +0100277 #. The connection is established, and a :ref:`transport <asyncio-transport>`
Victor Stinnerea3183f2013-12-03 01:08:00 +0100278 is created to represent it.
279
280 #. *protocol_factory* is called without arguments and must return a
Victor Stinner9592edb2014-02-02 15:03:02 +0100281 :ref:`protocol <asyncio-protocol>` instance.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100282
283 #. The protocol instance is tied to the transport, and its
284 :meth:`connection_made` method is called.
285
286 #. The coroutine returns successfully with the ``(transport, protocol)``
287 pair.
288
289 The created transport is an implementation-dependent bidirectional stream.
290
291 .. note::
292 *protocol_factory* can be any kind of callable, not necessarily
293 a class. For example, if you want to use a pre-created
294 protocol instance, you can pass ``lambda: my_protocol``.
295
Martin Panterc04fb562016-02-10 05:44:01 +0000296 Options that change how the connection is created:
Victor Stinnerea3183f2013-12-03 01:08:00 +0100297
298 * *ssl*: if given and not false, a SSL/TLS transport is created
299 (by default a plain TCP transport is created). If *ssl* is
300 a :class:`ssl.SSLContext` object, this context is used to create
301 the transport; if *ssl* is :const:`True`, a context with some
302 unspecified default settings is used.
303
Berker Peksag9c1dba22014-09-28 00:00:58 +0300304 .. seealso:: :ref:`SSL/TLS security considerations <ssl-security>`
Antoine Pitrouc5e075f2014-03-22 18:19:11 +0100305
Victor Stinnerea3183f2013-12-03 01:08:00 +0100306 * *server_hostname*, is only for use together with *ssl*,
307 and sets or overrides the hostname that the target server's certificate
308 will be matched against. By default the value of the *host* argument
309 is used. If *host* is empty, there is no default and you must pass a
310 value for *server_hostname*. If *server_hostname* is an empty
311 string, hostname matching is disabled (which is a serious security
312 risk, allowing for man-in-the-middle-attacks).
313
314 * *family*, *proto*, *flags* are the optional address family, protocol
315 and flags to be passed through to getaddrinfo() for *host* resolution.
316 If given, these should all be integers from the corresponding
317 :mod:`socket` module constants.
318
319 * *sock*, if given, should be an existing, already connected
320 :class:`socket.socket` object to be used by the transport.
321 If *sock* is given, none of *host*, *port*, *family*, *proto*, *flags*
322 and *local_addr* should be specified.
323
324 * *local_addr*, if given, is a ``(local_host, local_port)`` tuple used
325 to bind the socket to locally. The *local_host* and *local_port*
326 are looked up using getaddrinfo(), similarly to *host* and *port*.
327
Neil Aspinallf7686c12017-12-19 19:45:42 +0000328 * *ssl_handshake_timeout* is (for an SSL connection) the time in seconds
329 to wait for the SSL handshake to complete before aborting the connection.
Andrew Svetlov51eb1c62017-12-20 20:24:43 +0200330 ``10.0`` seconds if ``None`` (default).
Neil Aspinallf7686c12017-12-19 19:45:42 +0000331
332 .. versionadded:: 3.7
333
334 The *ssl_handshake_timeout* parameter.
335
Victor Stinner60208a12015-09-15 22:41:52 +0200336 .. versionchanged:: 3.5
337
338 On Windows with :class:`ProactorEventLoop`, SSL/TLS is now supported.
Victor Stinner41f3c3f2014-08-31 14:47:37 +0200339
Victor Stinnerc8ea8132014-01-23 11:02:09 +0100340 .. seealso::
341
342 The :func:`open_connection` function can be used to get a pair of
343 (:class:`StreamReader`, :class:`StreamWriter`) instead of a protocol.
344
Victor Stinnerea3183f2013-12-03 01:08:00 +0100345
Guido van Rossumf68afd82016-08-08 09:41:21 -0700346.. coroutinemethod:: AbstractEventLoop.create_datagram_endpoint(protocol_factory, local_addr=None, remote_addr=None, \*, family=0, proto=0, flags=0, reuse_address=None, reuse_port=None, allow_broadcast=None, sock=None)
Victor Stinnera6919aa2014-02-19 13:32:34 +0100347
Quentin Dawansfe4ea9c2017-10-30 14:43:02 +0100348 Create datagram connection: socket family :py:data:`~socket.AF_INET`,
349 :py:data:`~socket.AF_INET6` or :py:data:`~socket.AF_UNIX` depending on
350 *host* (or *family* if specified), socket type
351 :py:data:`~socket.SOCK_DGRAM`. *protocol_factory* must be a
Guido van Rossumb9bf9132015-10-05 09:15:28 -0700352 callable returning a :ref:`protocol <asyncio-protocol>` instance.
Victor Stinnera6919aa2014-02-19 13:32:34 +0100353
Yury Selivanov19a44f62017-12-14 20:53:26 -0500354 This method will try to establish the connection in the background.
355 When successful, the it returns a ``(transport, protocol)`` pair.
Victor Stinnera6919aa2014-02-19 13:32:34 +0100356
Guido van Rossumb9bf9132015-10-05 09:15:28 -0700357 Options changing how the connection is created:
358
359 * *local_addr*, if given, is a ``(local_host, local_port)`` tuple used
360 to bind the socket to locally. The *local_host* and *local_port*
361 are looked up using :meth:`getaddrinfo`.
362
363 * *remote_addr*, if given, is a ``(remote_host, remote_port)`` tuple used
364 to connect the socket to a remote address. The *remote_host* and
365 *remote_port* are looked up using :meth:`getaddrinfo`.
366
367 * *family*, *proto*, *flags* are the optional address family, protocol
368 and flags to be passed through to :meth:`getaddrinfo` for *host*
369 resolution. If given, these should all be integers from the
370 corresponding :mod:`socket` module constants.
371
372 * *reuse_address* tells the kernel to reuse a local socket in
373 TIME_WAIT state, without waiting for its natural timeout to
Serhiy Storchaka4adf01c2016-10-19 18:30:05 +0300374 expire. If not specified will automatically be set to ``True`` on
Guido van Rossumb9bf9132015-10-05 09:15:28 -0700375 UNIX.
376
377 * *reuse_port* tells the kernel to allow this endpoint to be bound to the
378 same port as other existing endpoints are bound to, so long as they all
379 set this flag when being created. This option is not supported on Windows
380 and some UNIX's. If the :py:data:`~socket.SO_REUSEPORT` constant is not
381 defined then this capability is unsupported.
382
383 * *allow_broadcast* tells the kernel to allow this endpoint to send
384 messages to the broadcast address.
385
386 * *sock* can optionally be specified in order to use a preexisting,
387 already connected, :class:`socket.socket` object to be used by the
388 transport. If specified, *local_addr* and *remote_addr* should be omitted
389 (must be :const:`None`).
Victor Stinnera6919aa2014-02-19 13:32:34 +0100390
Victor Stinner41f3c3f2014-08-31 14:47:37 +0200391 On Windows with :class:`ProactorEventLoop`, this method is not supported.
392
Victor Stinnerc7edffd2014-10-12 11:24:26 +0200393 See :ref:`UDP echo client protocol <asyncio-udp-echo-client-protocol>` and
394 :ref:`UDP echo server protocol <asyncio-udp-echo-server-protocol>` examples.
395
Miss Islington (bot)c6348cf2018-05-14 13:12:38 -0700396 .. versionchanged:: 3.4.4
397 The *family*, *proto*, *flags*, *reuse_address*, *reuse_port,
398 *allow_broadcast*, and *sock* parameters were added.
Victor Stinnera6919aa2014-02-19 13:32:34 +0100399
Andrew Svetlov51eb1c62017-12-20 20:24:43 +0200400.. coroutinemethod:: AbstractEventLoop.create_unix_connection(protocol_factory, path=None, \*, ssl=None, sock=None, server_hostname=None, ssl_handshake_timeout=None)
Victor Stinnera6919aa2014-02-19 13:32:34 +0100401
402 Create UNIX connection: socket family :py:data:`~socket.AF_UNIX`, socket
403 type :py:data:`~socket.SOCK_STREAM`. The :py:data:`~socket.AF_UNIX` socket
404 family is used to communicate between processes on the same machine
405 efficiently.
406
Yury Selivanov19a44f62017-12-14 20:53:26 -0500407 This method will try to establish the connection in the background.
408 When successful, the it returns a ``(transport, protocol)`` pair.
Victor Stinnera6919aa2014-02-19 13:32:34 +0100409
Guido van Rossum9e80eeb2016-11-03 14:17:25 -0700410 *path* is the name of a UNIX domain socket, and is required unless a *sock*
Yury Selivanov423fd362017-11-20 17:26:28 -0500411 parameter is specified. Abstract UNIX sockets, :class:`str`,
412 :class:`bytes`, and :class:`~pathlib.Path` paths are supported.
Guido van Rossum9e80eeb2016-11-03 14:17:25 -0700413
Guido van Rossumf68afd82016-08-08 09:41:21 -0700414 See the :meth:`AbstractEventLoop.create_connection` method for parameters.
Victor Stinnera6919aa2014-02-19 13:32:34 +0100415
416 Availability: UNIX.
417
Neil Aspinallf7686c12017-12-19 19:45:42 +0000418 .. versionadded:: 3.7
419
420 The *ssl_handshake_timeout* parameter.
421
Yury Selivanov423fd362017-11-20 17:26:28 -0500422 .. versionchanged:: 3.7
423
424 The *path* parameter can now be a :class:`~pathlib.Path` object.
425
Victor Stinnera6919aa2014-02-19 13:32:34 +0100426
Victor Stinnerea3183f2013-12-03 01:08:00 +0100427Creating listening connections
428------------------------------
429
Yury Selivanovc9070d02018-01-25 18:08:09 -0500430.. coroutinemethod:: AbstractEventLoop.create_server(protocol_factory, host=None, port=None, \*, family=socket.AF_UNSPEC, flags=socket.AI_PASSIVE, sock=None, backlog=100, ssl=None, reuse_address=None, reuse_port=None, ssl_handshake_timeout=None, start_serving=True)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100431
Victor Stinner33f6abe2014-10-12 20:36:04 +0200432 Create a TCP server (socket type :data:`~socket.SOCK_STREAM`) bound to
433 *host* and *port*.
434
435 Return a :class:`Server` object, its :attr:`~Server.sockets` attribute
436 contains created sockets. Use the :meth:`Server.close` method to stop the
437 server: close listening sockets.
438
439 Parameters:
440
Victor Stinner5e4a7d82015-09-21 18:33:43 +0200441 * The *host* parameter can be a string, in that case the TCP server is
442 bound to *host* and *port*. The *host* parameter can also be a sequence
443 of strings and in that case the TCP server is bound to all hosts of the
444 sequence. If *host* is an empty string or ``None``, all interfaces are
445 assumed and a list of multiple sockets will be returned (most likely one
446 for IPv4 and another one for IPv6).
Victor Stinner33f6abe2014-10-12 20:36:04 +0200447
448 * *family* can be set to either :data:`socket.AF_INET` or
449 :data:`~socket.AF_INET6` to force the socket to use IPv4 or IPv6. If not set
450 it will be determined from host (defaults to :data:`socket.AF_UNSPEC`).
451
452 * *flags* is a bitmask for :meth:`getaddrinfo`.
453
454 * *sock* can optionally be specified in order to use a preexisting
455 socket object. If specified, *host* and *port* should be omitted (must be
456 :const:`None`).
457
458 * *backlog* is the maximum number of queued connections passed to
459 :meth:`~socket.socket.listen` (defaults to 100).
460
461 * *ssl* can be set to an :class:`~ssl.SSLContext` to enable SSL over the
462 accepted connections.
463
464 * *reuse_address* tells the kernel to reuse a local socket in
465 TIME_WAIT state, without waiting for its natural timeout to
Serhiy Storchaka4adf01c2016-10-19 18:30:05 +0300466 expire. If not specified will automatically be set to ``True`` on
Victor Stinner33f6abe2014-10-12 20:36:04 +0200467 UNIX.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100468
Guido van Rossumb9bf9132015-10-05 09:15:28 -0700469 * *reuse_port* tells the kernel to allow this endpoint to be bound to the
470 same port as other existing endpoints are bound to, so long as they all
471 set this flag when being created. This option is not supported on
472 Windows.
473
Neil Aspinallf7686c12017-12-19 19:45:42 +0000474 * *ssl_handshake_timeout* is (for an SSL server) the time in seconds to wait
475 for the SSL handshake to complete before aborting the connection.
Andrew Svetlov51eb1c62017-12-20 20:24:43 +0200476 ``10.0`` seconds if ``None`` (default).
Neil Aspinallf7686c12017-12-19 19:45:42 +0000477
Yury Selivanovc9070d02018-01-25 18:08:09 -0500478 * *start_serving* set to ``True`` (the default) causes the created server
479 to start accepting connections immediately. When set to ``False``,
480 the user should await on :meth:`Server.start_serving` or
481 :meth:`Server.serve_forever` to make the server to start accepting
482 connections.
483
Neil Aspinallf7686c12017-12-19 19:45:42 +0000484 .. versionadded:: 3.7
485
Yury Selivanovc9070d02018-01-25 18:08:09 -0500486 *ssl_handshake_timeout* and *start_serving* parameters.
Neil Aspinallf7686c12017-12-19 19:45:42 +0000487
Victor Stinner60208a12015-09-15 22:41:52 +0200488 .. versionchanged:: 3.5
489
490 On Windows with :class:`ProactorEventLoop`, SSL/TLS is now supported.
Victor Stinner41f3c3f2014-08-31 14:47:37 +0200491
Victor Stinnerc8ea8132014-01-23 11:02:09 +0100492 .. seealso::
493
494 The function :func:`start_server` creates a (:class:`StreamReader`,
495 :class:`StreamWriter`) pair and calls back a function with this pair.
496
Victor Stinner7b58a2b2015-09-21 18:41:05 +0200497 .. versionchanged:: 3.5.1
Victor Stinner5e4a7d82015-09-21 18:33:43 +0200498
499 The *host* parameter can now be a sequence of strings.
500
Victor Stinnerea3183f2013-12-03 01:08:00 +0100501
Yury Selivanovc9070d02018-01-25 18:08:09 -0500502.. coroutinemethod:: AbstractEventLoop.create_unix_server(protocol_factory, path=None, \*, sock=None, backlog=100, ssl=None, ssl_handshake_timeout=None, start_serving=True)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100503
Guido van Rossumf68afd82016-08-08 09:41:21 -0700504 Similar to :meth:`AbstractEventLoop.create_server`, but specific to the
Victor Stinnera6919aa2014-02-19 13:32:34 +0100505 socket family :py:data:`~socket.AF_UNIX`.
506
Yury Selivanov423fd362017-11-20 17:26:28 -0500507 *path* is the name of a UNIX domain socket, and is required unless a *sock*
508 parameter is specified. Abstract UNIX sockets, :class:`str`,
509 :class:`bytes`, and :class:`~pathlib.Path` paths are supported.
510
Victor Stinnera6919aa2014-02-19 13:32:34 +0100511 Availability: UNIX.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100512
Neil Aspinallf7686c12017-12-19 19:45:42 +0000513 .. versionadded:: 3.7
514
515 The *ssl_handshake_timeout* parameter.
516
Yury Selivanov423fd362017-11-20 17:26:28 -0500517 .. versionchanged:: 3.7
518
519 The *path* parameter can now be a :class:`~pathlib.Path` object.
520
Andrew Svetlov51eb1c62017-12-20 20:24:43 +0200521.. coroutinemethod:: BaseEventLoop.connect_accepted_socket(protocol_factory, sock, \*, ssl=None, ssl_handshake_timeout=None)
Yury Selivanov3b3a1412016-11-07 15:35:25 -0500522
523 Handle an accepted connection.
524
525 This is used by servers that accept connections outside of
526 asyncio but that use asyncio to handle them.
527
528 Parameters:
529
530 * *sock* is a preexisting socket object returned from an ``accept``
531 call.
532
533 * *ssl* can be set to an :class:`~ssl.SSLContext` to enable SSL over the
534 accepted connections.
535
Neil Aspinallf7686c12017-12-19 19:45:42 +0000536 * *ssl_handshake_timeout* is (for an SSL connection) the time in seconds to
537 wait for the SSL handshake to complete before aborting the connection.
Andrew Svetlov51eb1c62017-12-20 20:24:43 +0200538 ``10.0`` seconds if ``None`` (default).
Neil Aspinallf7686c12017-12-19 19:45:42 +0000539
Yury Selivanov19a44f62017-12-14 20:53:26 -0500540 When completed it returns a ``(transport, protocol)`` pair.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100541
Neil Aspinallf7686c12017-12-19 19:45:42 +0000542 .. versionadded:: 3.7
543
544 The *ssl_handshake_timeout* parameter.
545
AraHaan431665b2017-11-21 11:06:26 -0500546 .. versionadded:: 3.5.3
547
548
Andrew Svetlov7c684072018-01-27 21:22:47 +0200549File Transferring
550-----------------
551
Elvis Pranskevichusee72ac02018-01-27 17:11:10 -0500552.. coroutinemethod:: AbstractEventLoop.sendfile(transport, file, \
Andrew Svetlov7c684072018-01-27 21:22:47 +0200553 offset=0, count=None, \
554 *, fallback=True)
555
556 Send a *file* to *transport*, return the total number of bytes
557 which were sent.
558
559 The method uses high-performance :meth:`os.sendfile` if available.
560
561 *file* must be a regular file object opened in binary mode.
562
563 *offset* tells from where to start reading the file. If specified,
564 *count* is the total number of bytes to transmit as opposed to
565 sending the file until EOF is reached. File position is updated on
566 return or also in case of error in which case :meth:`file.tell()
567 <io.IOBase.tell>` can be used to figure out the number of bytes
568 which were sent.
569
570 *fallback* set to ``True`` makes asyncio to manually read and send
571 the file when the platform does not support the sendfile syscall
572 (e.g. Windows or SSL socket on Unix).
573
574 Raise :exc:`SendfileNotAvailableError` if the system does not support
575 *sendfile* syscall and *fallback* is ``False``.
576
577 .. versionadded:: 3.7
578
579
Yury Selivanovf111b3d2017-12-30 00:35:36 -0500580TLS Upgrade
581-----------
582
583.. coroutinemethod:: AbstractEventLoop.start_tls(transport, protocol, sslcontext, \*, server_side=False, server_hostname=None, ssl_handshake_timeout=None)
584
585 Upgrades an existing connection to TLS.
586
587 Returns a new transport instance, that the *protocol* must start using
588 immediately after the *await*. The *transport* instance passed to
589 the *start_tls* method should never be used again.
590
591 Parameters:
592
593 * *transport* and *protocol* instances that methods like
594 :meth:`~AbstractEventLoop.create_server` and
595 :meth:`~AbstractEventLoop.create_connection` return.
596
597 * *sslcontext*: a configured instance of :class:`~ssl.SSLContext`.
598
599 * *server_side* pass ``True`` when a server-side connection is being
600 upgraded (like the one created by :meth:`~AbstractEventLoop.create_server`).
601
602 * *server_hostname*: sets or overrides the host name that the target
603 server's certificate will be matched against.
604
605 * *ssl_handshake_timeout* is (for an SSL connection) the time in seconds to
606 wait for the SSL handshake to complete before aborting the connection.
607 ``10.0`` seconds if ``None`` (default).
608
609 .. versionadded:: 3.7
610
611
Victor Stinnerc1567df2014-02-08 23:22:58 +0100612Watch file descriptors
613----------------------
614
Victor Stinner41f3c3f2014-08-31 14:47:37 +0200615On Windows with :class:`SelectorEventLoop`, only socket handles are supported
616(ex: pipe file descriptors are not supported).
617
618On Windows with :class:`ProactorEventLoop`, these methods are not supported.
619
Guido van Rossumf68afd82016-08-08 09:41:21 -0700620.. method:: AbstractEventLoop.add_reader(fd, callback, \*args)
Victor Stinnerc1567df2014-02-08 23:22:58 +0100621
622 Start watching the file descriptor for read availability and then call the
623 *callback* with specified arguments.
624
Victor Stinner8464c242014-11-28 13:15:41 +0100625 :ref:`Use functools.partial to pass keywords to the callback
626 <asyncio-pass-keywords>`.
627
Guido van Rossumf68afd82016-08-08 09:41:21 -0700628.. method:: AbstractEventLoop.remove_reader(fd)
Victor Stinnerc1567df2014-02-08 23:22:58 +0100629
630 Stop watching the file descriptor for read availability.
631
Guido van Rossumf68afd82016-08-08 09:41:21 -0700632.. method:: AbstractEventLoop.add_writer(fd, callback, \*args)
Victor Stinnerc1567df2014-02-08 23:22:58 +0100633
634 Start watching the file descriptor for write availability and then call the
635 *callback* with specified arguments.
636
Victor Stinner8464c242014-11-28 13:15:41 +0100637 :ref:`Use functools.partial to pass keywords to the callback
638 <asyncio-pass-keywords>`.
639
Guido van Rossumf68afd82016-08-08 09:41:21 -0700640.. method:: AbstractEventLoop.remove_writer(fd)
Victor Stinnerc1567df2014-02-08 23:22:58 +0100641
642 Stop watching the file descriptor for write availability.
643
Victor Stinner04e6df32014-10-11 16:16:27 +0200644The :ref:`watch a file descriptor for read events <asyncio-watch-read-event>`
Guido van Rossumf68afd82016-08-08 09:41:21 -0700645example uses the low-level :meth:`AbstractEventLoop.add_reader` method to register
Victor Stinner04e6df32014-10-11 16:16:27 +0200646the file descriptor of a socket.
647
Victor Stinnerc1567df2014-02-08 23:22:58 +0100648
649Low-level socket operations
650---------------------------
651
Guido van Rossumf68afd82016-08-08 09:41:21 -0700652.. coroutinemethod:: AbstractEventLoop.sock_recv(sock, nbytes)
Victor Stinnerc1567df2014-02-08 23:22:58 +0100653
Yury Selivanov55c50842016-06-08 12:48:15 -0400654 Receive data from the socket. Modeled after blocking
655 :meth:`socket.socket.recv` method.
656
657 The return value is a bytes object
Victor Stinnerc1567df2014-02-08 23:22:58 +0100658 representing the data received. The maximum amount of data to be received
659 at once is specified by *nbytes*.
660
Victor Stinnerd84fd732014-08-26 01:01:59 +0200661 With :class:`SelectorEventLoop` event loop, the socket *sock* must be
662 non-blocking.
Victor Stinnerec2ce092014-07-29 23:12:22 +0200663
Yury Selivanov19a44f62017-12-14 20:53:26 -0500664 .. versionchanged:: 3.7
665 Even though the method was always documented as a coroutine
666 method, before Python 3.7 it returned a :class:`Future`.
667 Since Python 3.7, this is an ``async def`` method.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100668
Antoine Pitrou525f40d2017-10-19 21:46:40 +0200669.. coroutinemethod:: AbstractEventLoop.sock_recv_into(sock, buf)
670
671 Receive data from the socket. Modeled after blocking
672 :meth:`socket.socket.recv_into` method.
673
674 The received data is written into *buf* (a writable buffer).
675 The return value is the number of bytes written.
676
677 With :class:`SelectorEventLoop` event loop, the socket *sock* must be
678 non-blocking.
679
Antoine Pitrou525f40d2017-10-19 21:46:40 +0200680 .. versionadded:: 3.7
681
Guido van Rossumf68afd82016-08-08 09:41:21 -0700682.. coroutinemethod:: AbstractEventLoop.sock_sendall(sock, data)
Victor Stinnerc1567df2014-02-08 23:22:58 +0100683
Yury Selivanov55c50842016-06-08 12:48:15 -0400684 Send data to the socket. Modeled after blocking
685 :meth:`socket.socket.sendall` method.
686
687 The socket must be connected to a remote socket.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100688 This method continues to send data from *data* until either all data has
689 been sent or an error occurs. ``None`` is returned on success. On error,
690 an exception is raised, and there is no way to determine how much data, if
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500691 any, was successfully processed by the receiving end of the connection.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100692
Victor Stinnerd84fd732014-08-26 01:01:59 +0200693 With :class:`SelectorEventLoop` event loop, the socket *sock* must be
694 non-blocking.
Victor Stinnerec2ce092014-07-29 23:12:22 +0200695
Yury Selivanov19a44f62017-12-14 20:53:26 -0500696 .. versionchanged:: 3.7
697 Even though the method was always documented as a coroutine
698 method, before Python 3.7 it returned an :class:`Future`.
699 Since Python 3.7, this is an ``async def`` method.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100700
Guido van Rossumf68afd82016-08-08 09:41:21 -0700701.. coroutinemethod:: AbstractEventLoop.sock_connect(sock, address)
Victor Stinnerc1567df2014-02-08 23:22:58 +0100702
Yury Selivanov55c50842016-06-08 12:48:15 -0400703 Connect to a remote socket at *address*. Modeled after
704 blocking :meth:`socket.socket.connect` method.
Victor Stinner1b0580b2014-02-13 09:24:37 +0100705
Victor Stinnerd84fd732014-08-26 01:01:59 +0200706 With :class:`SelectorEventLoop` event loop, the socket *sock* must be
707 non-blocking.
Victor Stinnerec2ce092014-07-29 23:12:22 +0200708
Yury Selivanov55c50842016-06-08 12:48:15 -0400709 .. versionchanged:: 3.5.2
710 ``address`` no longer needs to be resolved. ``sock_connect``
711 will try to check if the *address* is already resolved by calling
712 :func:`socket.inet_pton`. If not,
Guido van Rossumf68afd82016-08-08 09:41:21 -0700713 :meth:`AbstractEventLoop.getaddrinfo` will be used to resolve the
Yury Selivanov55c50842016-06-08 12:48:15 -0400714 *address*.
715
Victor Stinnerc1567df2014-02-08 23:22:58 +0100716 .. seealso::
717
Guido van Rossumf68afd82016-08-08 09:41:21 -0700718 :meth:`AbstractEventLoop.create_connection`
Yury Selivanov55c50842016-06-08 12:48:15 -0400719 and :func:`asyncio.open_connection() <open_connection>`.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100720
721
Guido van Rossumf68afd82016-08-08 09:41:21 -0700722.. coroutinemethod:: AbstractEventLoop.sock_accept(sock)
Victor Stinnerc1567df2014-02-08 23:22:58 +0100723
Yury Selivanov55c50842016-06-08 12:48:15 -0400724 Accept a connection. Modeled after blocking
725 :meth:`socket.socket.accept`.
726
727 The socket must be bound to an address and listening
Victor Stinnerc1567df2014-02-08 23:22:58 +0100728 for connections. The return value is a pair ``(conn, address)`` where *conn*
729 is a *new* socket object usable to send and receive data on the connection,
730 and *address* is the address bound to the socket on the other end of the
731 connection.
732
Victor Stinnerec2ce092014-07-29 23:12:22 +0200733 The socket *sock* must be non-blocking.
734
Yury Selivanov19a44f62017-12-14 20:53:26 -0500735 .. versionchanged:: 3.7
736 Even though the method was always documented as a coroutine
737 method, before Python 3.7 it returned a :class:`Future`.
738 Since Python 3.7, this is an ``async def`` method.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100739
740 .. seealso::
741
Guido van Rossumf68afd82016-08-08 09:41:21 -0700742 :meth:`AbstractEventLoop.create_server` and :func:`start_server`.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100743
Andrew Svetlov6b5a2792018-01-16 19:59:34 +0200744.. coroutinemethod:: AbstractEventLoop.sock_sendfile(sock, file, \
745 offset=0, count=None, \
746 *, fallback=True)
747
748 Send a file using high-performance :mod:`os.sendfile` if possible
749 and return the total number of bytes which were sent.
750
751 Asynchronous version of :meth:`socket.socket.sendfile`.
752
753 *sock* must be non-blocking :class:`~socket.socket` of
754 :const:`socket.SOCK_STREAM` type.
755
756 *file* must be a regular file object opened in binary mode.
757
758 *offset* tells from where to start reading the file. If specified,
759 *count* is the total number of bytes to transmit as opposed to
760 sending the file until EOF is reached. File position is updated on
761 return or also in case of error in which case :meth:`file.tell()
762 <io.IOBase.tell>` can be used to figure out the number of bytes
763 which were sent.
764
765 *fallback* set to ``True`` makes asyncio to manually read and send
766 the file when the platform does not support the sendfile syscall
767 (e.g. Windows or SSL socket on Unix).
768
Andrew Svetlov7464e872018-01-19 20:04:29 +0200769 Raise :exc:`SendfileNotAvailableError` if the system does not support
Andrew Svetlov6b5a2792018-01-16 19:59:34 +0200770 *sendfile* syscall and *fallback* is ``False``.
771
772 .. versionadded:: 3.7
773
Victor Stinnerc1567df2014-02-08 23:22:58 +0100774
775Resolve host name
776-----------------
Victor Stinnerea3183f2013-12-03 01:08:00 +0100777
Guido van Rossumf68afd82016-08-08 09:41:21 -0700778.. coroutinemethod:: AbstractEventLoop.getaddrinfo(host, port, \*, family=0, type=0, proto=0, flags=0)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100779
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500780 This method is a :ref:`coroutine <coroutine>`, similar to
781 :meth:`socket.getaddrinfo` function but non-blocking.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100782
Guido van Rossumf68afd82016-08-08 09:41:21 -0700783.. coroutinemethod:: AbstractEventLoop.getnameinfo(sockaddr, flags=0)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100784
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500785 This method is a :ref:`coroutine <coroutine>`, similar to
786 :meth:`socket.getnameinfo` function but non-blocking.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100787
Yury Selivanovbec23722018-01-28 14:09:40 -0500788.. versionchanged:: 3.7
789 Both *getaddrinfo* and *getnameinfo* methods were always documented
790 to return a coroutine, but prior to Python 3.7 they were, in fact,
791 returning :class:`asyncio.Future` objects. Starting with Python 3.7
792 both methods are coroutines.
793
Victor Stinnerea3183f2013-12-03 01:08:00 +0100794
Victor Stinner984600f2014-03-25 09:40:26 +0100795Connect pipes
796-------------
Victor Stinnerea3183f2013-12-03 01:08:00 +0100797
Victor Stinner41f3c3f2014-08-31 14:47:37 +0200798On Windows with :class:`SelectorEventLoop`, these methods are not supported.
799Use :class:`ProactorEventLoop` to support pipes on Windows.
800
Guido van Rossumf68afd82016-08-08 09:41:21 -0700801.. coroutinemethod:: AbstractEventLoop.connect_read_pipe(protocol_factory, pipe)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100802
Victor Stinnerd84fd732014-08-26 01:01:59 +0200803 Register read pipe in eventloop.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100804
805 *protocol_factory* should instantiate object with :class:`Protocol`
Victor Stinnera5b257a2014-05-29 00:14:03 +0200806 interface. *pipe* is a :term:`file-like object <file object>`.
807 Return pair ``(transport, protocol)``, where *transport* supports the
Victor Stinnerea3183f2013-12-03 01:08:00 +0100808 :class:`ReadTransport` interface.
809
Victor Stinnerd84fd732014-08-26 01:01:59 +0200810 With :class:`SelectorEventLoop` event loop, the *pipe* is set to
811 non-blocking mode.
812
Guido van Rossumf68afd82016-08-08 09:41:21 -0700813.. coroutinemethod:: AbstractEventLoop.connect_write_pipe(protocol_factory, pipe)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100814
815 Register write pipe in eventloop.
816
817 *protocol_factory* should instantiate object with :class:`BaseProtocol`
Victor Stinner2cef3002014-10-23 22:38:46 +0200818 interface. *pipe* is :term:`file-like object <file object>`.
819 Return pair ``(transport, protocol)``, where *transport* supports
Victor Stinnerea3183f2013-12-03 01:08:00 +0100820 :class:`WriteTransport` interface.
821
Victor Stinnerd84fd732014-08-26 01:01:59 +0200822 With :class:`SelectorEventLoop` event loop, the *pipe* is set to
823 non-blocking mode.
824
Victor Stinner08444382014-02-02 22:43:39 +0100825.. seealso::
826
Guido van Rossumf68afd82016-08-08 09:41:21 -0700827 The :meth:`AbstractEventLoop.subprocess_exec` and
828 :meth:`AbstractEventLoop.subprocess_shell` methods.
Victor Stinner08444382014-02-02 22:43:39 +0100829
Victor Stinnerea3183f2013-12-03 01:08:00 +0100830
Victor Stinner8b863482014-01-27 10:07:50 +0100831UNIX signals
832------------
833
834Availability: UNIX only.
835
Guido van Rossumf68afd82016-08-08 09:41:21 -0700836.. method:: AbstractEventLoop.add_signal_handler(signum, callback, \*args)
Victor Stinner8b863482014-01-27 10:07:50 +0100837
838 Add a handler for a signal.
839
840 Raise :exc:`ValueError` if the signal number is invalid or uncatchable.
841 Raise :exc:`RuntimeError` if there is a problem setting up the handler.
842
Victor Stinner8464c242014-11-28 13:15:41 +0100843 :ref:`Use functools.partial to pass keywords to the callback
844 <asyncio-pass-keywords>`.
845
Guido van Rossumf68afd82016-08-08 09:41:21 -0700846.. method:: AbstractEventLoop.remove_signal_handler(sig)
Victor Stinner8b863482014-01-27 10:07:50 +0100847
848 Remove a handler for a signal.
849
850 Return ``True`` if a signal handler was removed, ``False`` if not.
851
852.. seealso::
853
854 The :mod:`signal` module.
855
856
Victor Stinnerea3183f2013-12-03 01:08:00 +0100857Executor
858--------
859
860Call a function in an :class:`~concurrent.futures.Executor` (pool of threads or
861pool of processes). By default, an event loop uses a thread pool executor
862(:class:`~concurrent.futures.ThreadPoolExecutor`).
863
Yury Selivanovbec23722018-01-28 14:09:40 -0500864.. method:: AbstractEventLoop.run_in_executor(executor, func, \*args)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100865
Andrew Svetlov1c62b522015-10-01 09:48:08 +0300866 Arrange for a *func* to be called in the specified executor.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100867
Larry Hastings3732ed22014-03-15 21:13:56 -0700868 The *executor* argument should be an :class:`~concurrent.futures.Executor`
869 instance. The default executor is used if *executor* is ``None``.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100870
Andrew Svetlov1c62b522015-10-01 09:48:08 +0300871 :ref:`Use functools.partial to pass keywords to the *func*
Victor Stinner8464c242014-11-28 13:15:41 +0100872 <asyncio-pass-keywords>`.
873
Yury Selivanovbec23722018-01-28 14:09:40 -0500874 This method returns a :class:`asyncio.Future` object.
875
Yury Selivanove8a60452016-10-21 17:40:42 -0400876 .. versionchanged:: 3.5.3
877 :meth:`BaseEventLoop.run_in_executor` no longer configures the
878 ``max_workers`` of the thread pool executor it creates, instead
879 leaving it up to the thread pool executor
880 (:class:`~concurrent.futures.ThreadPoolExecutor`) to set the
881 default.
882
Guido van Rossumf68afd82016-08-08 09:41:21 -0700883.. method:: AbstractEventLoop.set_default_executor(executor)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100884
885 Set the default executor used by :meth:`run_in_executor`.
886
887
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500888Error Handling API
889------------------
890
Martin Panterc04fb562016-02-10 05:44:01 +0000891Allows customizing how exceptions are handled in the event loop.
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500892
Guido van Rossumf68afd82016-08-08 09:41:21 -0700893.. method:: AbstractEventLoop.set_exception_handler(handler)
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500894
895 Set *handler* as the new event loop exception handler.
896
897 If *handler* is ``None``, the default exception handler will
898 be set.
899
900 If *handler* is a callable object, it should have a
901 matching signature to ``(loop, context)``, where ``loop``
902 will be a reference to the active event loop, ``context``
903 will be a ``dict`` object (see :meth:`call_exception_handler`
904 documentation for details about context).
905
Guido van Rossumf68afd82016-08-08 09:41:21 -0700906.. method:: AbstractEventLoop.get_exception_handler()
Yury Selivanov950204d2016-05-16 16:23:00 -0400907
908 Return the exception handler, or ``None`` if the default one
909 is in use.
910
911 .. versionadded:: 3.5.2
912
Guido van Rossumf68afd82016-08-08 09:41:21 -0700913.. method:: AbstractEventLoop.default_exception_handler(context)
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500914
915 Default exception handler.
916
917 This is called when an exception occurs and no exception
918 handler is set, and can be called by a custom exception
919 handler that wants to defer to the default behavior.
920
921 *context* parameter has the same meaning as in
922 :meth:`call_exception_handler`.
923
Guido van Rossumf68afd82016-08-08 09:41:21 -0700924.. method:: AbstractEventLoop.call_exception_handler(context)
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500925
926 Call the current event loop exception handler.
927
928 *context* is a ``dict`` object containing the following keys
929 (new keys may be introduced later):
930
931 * 'message': Error message;
932 * 'exception' (optional): Exception object;
933 * 'future' (optional): :class:`asyncio.Future` instance;
934 * 'handle' (optional): :class:`asyncio.Handle` instance;
935 * 'protocol' (optional): :ref:`Protocol <asyncio-protocol>` instance;
936 * 'transport' (optional): :ref:`Transport <asyncio-transport>` instance;
937 * 'socket' (optional): :class:`socket.socket` instance.
938
939 .. note::
940
941 Note: this method should not be overloaded in subclassed
942 event loops. For any custom exception handling, use
943 :meth:`set_exception_handler()` method.
944
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100945Debug mode
946----------
947
Guido van Rossumf68afd82016-08-08 09:41:21 -0700948.. method:: AbstractEventLoop.get_debug()
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100949
Victor Stinner7b7120e2014-06-23 00:12:14 +0200950 Get the debug mode (:class:`bool`) of the event loop.
951
952 The default value is ``True`` if the environment variable
953 :envvar:`PYTHONASYNCIODEBUG` is set to a non-empty string, ``False``
954 otherwise.
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100955
Victor Stinner64d750b2014-06-18 03:25:23 +0200956 .. versionadded:: 3.4.2
957
Guido van Rossumf68afd82016-08-08 09:41:21 -0700958.. method:: AbstractEventLoop.set_debug(enabled: bool)
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100959
960 Set the debug mode of the event loop.
961
Victor Stinner64d750b2014-06-18 03:25:23 +0200962 .. versionadded:: 3.4.2
963
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100964.. seealso::
965
Victor Stinner62511fd2014-06-23 00:36:11 +0200966 The :ref:`debug mode of asyncio <asyncio-debug-mode>`.
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100967
Victor Stinner8c462c52014-01-24 18:11:43 +0100968Server
969------
970
Victor Stinner8ebeb032014-07-11 23:47:40 +0200971.. class:: Server
Victor Stinner8c462c52014-01-24 18:11:43 +0100972
Victor Stinner8ebeb032014-07-11 23:47:40 +0200973 Server listening on sockets.
974
Yury Selivanovc9070d02018-01-25 18:08:09 -0500975 Object created by :meth:`AbstractEventLoop.create_server`,
976 :meth:`AbstractEventLoop.create_unix_server`, :func:`start_server`,
977 and :func:`start_unix_server` functions. Don't instantiate the class
978 directly.
979
980 *Server* objects are asynchronous context managers. When used in an
981 ``async with`` statement, it's guaranteed that the Server object is
982 closed and not accepting new connections when the ``async with``
983 statement is completed::
984
985 srv = await loop.create_server(...)
986
987 async with srv:
988 # some code
989
990 # At this point, srv is closed and no longer accepts new connections.
991
992
993 .. versionchanged:: 3.7
994 Server object is an asynchronous context manager since Python 3.7.
Victor Stinner8c462c52014-01-24 18:11:43 +0100995
996 .. method:: close()
997
Victor Stinner4bfb14a2014-07-12 03:20:24 +0200998 Stop serving: close listening sockets and set the :attr:`sockets`
999 attribute to ``None``.
1000
Berker Peksag49c9edf2016-01-20 07:14:22 +02001001 The sockets that represent existing incoming client connections are left
1002 open.
Victor Stinner8ebeb032014-07-11 23:47:40 +02001003
Berker Peksag49c9edf2016-01-20 07:14:22 +02001004 The server is closed asynchronously, use the :meth:`wait_closed`
1005 coroutine to wait until the server is closed.
Victor Stinner8c462c52014-01-24 18:11:43 +01001006
Srinivas Reddy Thatiparthy (శ్రీనివాస్ రెడ్డి తాటిపర్తి)1634fc22017-12-30 20:39:32 +05301007 .. method:: get_loop()
1008
1009 Gives the event loop associated with the server object.
1010
1011 .. versionadded:: 3.7
1012
Yury Selivanovc9070d02018-01-25 18:08:09 -05001013 .. coroutinemethod:: start_serving()
1014
1015 Start accepting connections.
1016
1017 This method is idempotent, so it can be called when
1018 the server is already being serving.
1019
1020 The new *start_serving* keyword-only parameter to
1021 :meth:`AbstractEventLoop.create_server` and
1022 :meth:`asyncio.start_server` allows to create a Server object
1023 that is not accepting connections right away. In which case
1024 this method, or :meth:`Server.serve_forever` can be used
1025 to make the Server object to start accepting connections.
1026
1027 .. versionadded:: 3.7
1028
1029 .. coroutinemethod:: serve_forever()
1030
1031 Start accepting connections until the coroutine is cancelled.
1032 Cancellation of ``serve_forever`` task causes the server
1033 to be closed.
1034
1035 This method can be called if the server is already accepting
1036 connections. Only one ``serve_forever`` task can exist per
1037 one *Server* object.
1038
1039 Example::
1040
1041 async def client_connected(reader, writer):
1042 # Communicate with the client with
1043 # reader/writer streams. For example:
1044 await reader.readline()
1045
1046 async def main(host, port):
1047 srv = await asyncio.start_server(
1048 client_connected, host, port)
Miss Islington (bot)aeb5d732018-02-17 10:02:46 -08001049 await srv.serve_forever()
Yury Selivanovc9070d02018-01-25 18:08:09 -05001050
1051 asyncio.run(main('127.0.0.1', 0))
1052
1053 .. versionadded:: 3.7
1054
1055 .. method:: is_serving()
1056
1057 Return ``True`` if the server is accepting new connections.
1058
1059 .. versionadded:: 3.7
1060
Victor Stinnerbdd574d2015-02-12 22:49:18 +01001061 .. coroutinemethod:: wait_closed()
Victor Stinner8c462c52014-01-24 18:11:43 +01001062
Victor Stinner8ebeb032014-07-11 23:47:40 +02001063 Wait until the :meth:`close` method completes.
1064
Victor Stinner8ebeb032014-07-11 23:47:40 +02001065 .. attribute:: sockets
1066
1067 List of :class:`socket.socket` objects the server is listening to, or
1068 ``None`` if the server is closed.
Victor Stinner8c462c52014-01-24 18:11:43 +01001069
Yury Selivanovc9070d02018-01-25 18:08:09 -05001070 .. versionchanged:: 3.7
1071 Prior to Python 3.7 ``Server.sockets`` used to return the
1072 internal list of server's sockets directly. In 3.7 a copy
1073 of that list is returned.
1074
Victor Stinner8c462c52014-01-24 18:11:43 +01001075
Yury Selivanov43ee1c12014-02-19 20:58:44 -05001076Handle
1077------
1078
1079.. class:: Handle
1080
Guido van Rossumf68afd82016-08-08 09:41:21 -07001081 A callback wrapper object returned by :func:`AbstractEventLoop.call_soon`,
Miss Islington (bot)71a0b0e2018-02-01 11:56:03 -08001082 :func:`AbstractEventLoop.call_soon_threadsafe`.
Yury Selivanov43ee1c12014-02-19 20:58:44 -05001083
1084 .. method:: cancel()
1085
Yury Selivanov1096f762015-06-25 13:49:52 -04001086 Cancel the call. If the callback is already canceled or executed,
1087 this method has no effect.
Victor Stinneraea82292014-07-08 23:42:38 +02001088
Marat Sharafutdinov69cfed12017-11-07 12:06:05 +03001089 .. method:: cancelled()
1090
1091 Return ``True`` if the call was cancelled.
1092
1093 .. versionadded:: 3.7
1094
Miss Islington (bot)71a0b0e2018-02-01 11:56:03 -08001095.. class:: TimerHandle
1096
1097 A callback wrapper object returned by :func:`AbstractEventLoop.call_later`,
1098 and :func:`AbstractEventLoop.call_at`.
1099
1100 The class is inherited from :class:`Handle`.
1101
1102 .. method:: when()
1103
1104 Return a scheduled callback time as :class:`float` seconds.
1105
1106 The time is an absolute timestamp, using the same time
1107 reference as :meth:`AbstractEventLoop.time`.
1108
1109 .. versionadded:: 3.7
1110
Yury Selivanov43ee1c12014-02-19 20:58:44 -05001111
Andrew Svetlov7464e872018-01-19 20:04:29 +02001112SendfileNotAvailableError
1113-------------------------
1114
1115
1116.. exception:: SendfileNotAvailableError
1117
1118 Sendfile syscall is not available, subclass of :exc:`RuntimeError`.
1119
Miss Islington (bot)211c0db2018-03-27 18:34:15 -07001120 Raised if the OS does not support sendfile syscall for
Andrew Svetlov7464e872018-01-19 20:04:29 +02001121 given socket or file type.
1122
1123
Victor Stinner6888b962014-10-11 16:15:58 +02001124Event loop examples
Victor Stinnera092a612015-01-09 15:58:41 +01001125-------------------
Yury Selivanov43ee1c12014-02-19 20:58:44 -05001126
Victor Stinner3e09e322013-12-03 01:22:06 +01001127.. _asyncio-hello-world-callback:
Victor Stinnerea3183f2013-12-03 01:08:00 +01001128
Victor Stinner7f314ed2014-10-15 18:49:16 +02001129Hello World with call_soon()
Victor Stinnera092a612015-01-09 15:58:41 +01001130^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Victor Stinnerea3183f2013-12-03 01:08:00 +01001131
Guido van Rossumf68afd82016-08-08 09:41:21 -07001132Example using the :meth:`AbstractEventLoop.call_soon` method to schedule a
Victor Stinner7f314ed2014-10-15 18:49:16 +02001133callback. The callback displays ``"Hello World"`` and then stops the event
1134loop::
Victor Stinnerea3183f2013-12-03 01:08:00 +01001135
1136 import asyncio
1137
Victor Stinner7f314ed2014-10-15 18:49:16 +02001138 def hello_world(loop):
Victor Stinnerea3183f2013-12-03 01:08:00 +01001139 print('Hello World')
Victor Stinner7f314ed2014-10-15 18:49:16 +02001140 loop.stop()
Victor Stinnerea3183f2013-12-03 01:08:00 +01001141
1142 loop = asyncio.get_event_loop()
Victor Stinner7f314ed2014-10-15 18:49:16 +02001143
1144 # Schedule a call to hello_world()
1145 loop.call_soon(hello_world, loop)
1146
1147 # Blocking call interrupted by loop.stop()
1148 loop.run_forever()
1149 loop.close()
Victor Stinnerea3183f2013-12-03 01:08:00 +01001150
Victor Stinner3e09e322013-12-03 01:22:06 +01001151.. seealso::
Victor Stinnerea3183f2013-12-03 01:08:00 +01001152
Victor Stinner6888b962014-10-11 16:15:58 +02001153 The :ref:`Hello World coroutine <asyncio-hello-world-coroutine>` example
1154 uses a :ref:`coroutine <coroutine>`.
Victor Stinnerea3183f2013-12-03 01:08:00 +01001155
Victor Stinner8b863482014-01-27 10:07:50 +01001156
Victor Stinner7f314ed2014-10-15 18:49:16 +02001157.. _asyncio-date-callback:
1158
1159Display the current date with call_later()
Victor Stinnera092a612015-01-09 15:58:41 +01001160^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Victor Stinner7f314ed2014-10-15 18:49:16 +02001161
1162Example of callback displaying the current date every second. The callback uses
Guido van Rossumf68afd82016-08-08 09:41:21 -07001163the :meth:`AbstractEventLoop.call_later` method to reschedule itself during 5
Victor Stinner7f314ed2014-10-15 18:49:16 +02001164seconds, and then stops the event loop::
1165
1166 import asyncio
1167 import datetime
1168
1169 def display_date(end_time, loop):
1170 print(datetime.datetime.now())
1171 if (loop.time() + 1.0) < end_time:
1172 loop.call_later(1, display_date, end_time, loop)
1173 else:
1174 loop.stop()
1175
1176 loop = asyncio.get_event_loop()
1177
1178 # Schedule the first call to display_date()
1179 end_time = loop.time() + 5.0
1180 loop.call_soon(display_date, end_time, loop)
1181
1182 # Blocking call interrupted by loop.stop()
1183 loop.run_forever()
1184 loop.close()
1185
1186.. seealso::
1187
1188 The :ref:`coroutine displaying the current date
1189 <asyncio-date-coroutine>` example uses a :ref:`coroutine
1190 <coroutine>`.
1191
1192
Victor Stinner04e6df32014-10-11 16:16:27 +02001193.. _asyncio-watch-read-event:
Victor Stinner8b863482014-01-27 10:07:50 +01001194
Victor Stinner04e6df32014-10-11 16:16:27 +02001195Watch a file descriptor for read events
Victor Stinnera092a612015-01-09 15:58:41 +01001196^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Victor Stinner04e6df32014-10-11 16:16:27 +02001197
1198Wait until a file descriptor received some data using the
Guido van Rossumf68afd82016-08-08 09:41:21 -07001199:meth:`AbstractEventLoop.add_reader` method and then close the event loop::
Victor Stinner04e6df32014-10-11 16:16:27 +02001200
1201 import asyncio
Victor Stinnerac577d72017-11-28 21:33:20 +01001202 from socket import socketpair
Victor Stinner04e6df32014-10-11 16:16:27 +02001203
1204 # Create a pair of connected file descriptors
Victor Stinnerccd8e342014-10-11 16:30:02 +02001205 rsock, wsock = socketpair()
Victor Stinner04e6df32014-10-11 16:16:27 +02001206 loop = asyncio.get_event_loop()
1207
1208 def reader():
1209 data = rsock.recv(100)
1210 print("Received:", data.decode())
Victor Stinner2cef3002014-10-23 22:38:46 +02001211 # We are done: unregister the file descriptor
Victor Stinner04e6df32014-10-11 16:16:27 +02001212 loop.remove_reader(rsock)
1213 # Stop the event loop
1214 loop.stop()
1215
Victor Stinner2cef3002014-10-23 22:38:46 +02001216 # Register the file descriptor for read event
Victor Stinner04e6df32014-10-11 16:16:27 +02001217 loop.add_reader(rsock, reader)
1218
1219 # Simulate the reception of data from the network
1220 loop.call_soon(wsock.send, 'abc'.encode())
1221
1222 # Run the event loop
1223 loop.run_forever()
1224
1225 # We are done, close sockets and the event loop
1226 rsock.close()
1227 wsock.close()
1228 loop.close()
1229
1230.. seealso::
1231
1232 The :ref:`register an open socket to wait for data using a protocol
1233 <asyncio-register-socket>` example uses a low-level protocol created by the
Guido van Rossumf68afd82016-08-08 09:41:21 -07001234 :meth:`AbstractEventLoop.create_connection` method.
Victor Stinner04e6df32014-10-11 16:16:27 +02001235
1236 The :ref:`register an open socket to wait for data using streams
1237 <asyncio-register-socket-streams>` example uses high-level streams
1238 created by the :func:`open_connection` function in a coroutine.
1239
1240
1241Set signal handlers for SIGINT and SIGTERM
Victor Stinnera092a612015-01-09 15:58:41 +01001242^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Victor Stinner04e6df32014-10-11 16:16:27 +02001243
1244Register handlers for signals :py:data:`SIGINT` and :py:data:`SIGTERM` using
Guido van Rossumf68afd82016-08-08 09:41:21 -07001245the :meth:`AbstractEventLoop.add_signal_handler` method::
Victor Stinner8b863482014-01-27 10:07:50 +01001246
1247 import asyncio
1248 import functools
1249 import os
1250 import signal
1251
1252 def ask_exit(signame):
1253 print("got signal %s: exit" % signame)
1254 loop.stop()
1255
1256 loop = asyncio.get_event_loop()
1257 for signame in ('SIGINT', 'SIGTERM'):
1258 loop.add_signal_handler(getattr(signal, signame),
1259 functools.partial(ask_exit, signame))
1260
Serhiy Storchaka0424eaf2015-09-12 17:45:25 +03001261 print("Event loop running forever, press Ctrl+C to interrupt.")
Victor Stinner8b863482014-01-27 10:07:50 +01001262 print("pid %s: send SIGINT or SIGTERM to exit." % os.getpid())
Victor Stinner63b21a82014-07-05 15:38:59 +02001263 try:
1264 loop.run_forever()
1265 finally:
1266 loop.close()
Victor Stinner2cef3002014-10-23 22:38:46 +02001267
1268This example only works on UNIX.