blob: 12e60c432b6f577a91507579e960df46cb0e1268 [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
8The event loop is the central execution device provided by :mod:`asyncio`.
9It provides multiple facilities, amongst which:
10
Eli Benderskyb73c8332014-02-09 06:07:47 -080011* Registering, executing and cancelling delayed calls (timeouts).
Victor Stinnerea3183f2013-12-03 01:08:00 +010012
Victor Stinner9592edb2014-02-02 15:03:02 +010013* Creating client and server :ref:`transports <asyncio-transport>` for various
Eli Benderskyb73c8332014-02-09 06:07:47 -080014 kinds of communication.
Victor Stinnerea3183f2013-12-03 01:08:00 +010015
Eli Bendersky136fea22014-02-09 06:55:58 -080016* Launching subprocesses and the associated :ref:`transports
17 <asyncio-transport>` for communication with an external program.
Victor Stinnerea3183f2013-12-03 01:08:00 +010018
Eli Benderskyb73c8332014-02-09 06:07:47 -080019* Delegating costly function calls to a pool of threads.
Victor Stinnerea3183f2013-12-03 01:08:00 +010020
Victor Stinneraea82292014-07-08 23:42:38 +020021.. class:: BaseEventLoop
Eli Bendersky136fea22014-02-09 06:55:58 -080022
Victor Stinneraea82292014-07-08 23:42:38 +020023 Base class of event loops.
Victor Stinnerea3183f2013-12-03 01:08:00 +010024
25Run an event loop
26-----------------
27
28.. method:: BaseEventLoop.run_forever()
29
30 Run until :meth:`stop` is called.
31
32.. method:: BaseEventLoop.run_until_complete(future)
33
Victor Stinner99c2ab42013-12-03 19:17:25 +010034 Run until the :class:`Future` is done.
Victor Stinnerea3183f2013-12-03 01:08:00 +010035
Victor Stinner530ef2f2014-07-08 12:39:10 +020036 If the argument is a :ref:`coroutine object <coroutine>`, it is wrapped by
37 :func:`async`.
Victor Stinnerea3183f2013-12-03 01:08:00 +010038
39 Return the Future's result, or raise its exception.
40
41.. method:: BaseEventLoop.is_running()
42
43 Returns running status of event loop.
44
Victor Stinnerafbf8272013-12-03 02:05:42 +010045.. method:: BaseEventLoop.stop()
Victor Stinnerea3183f2013-12-03 01:08:00 +010046
47 Stop running the event loop.
48
49 Every callback scheduled before :meth:`stop` is called will run.
Andrew Svetlovca4f3432014-07-24 11:36:33 +030050 Callbacks scheduled after :meth:`stop` is called will not run.
51 However, those callbacks will run if :meth:`run_forever` is called
52 again later.
Victor Stinnerea3183f2013-12-03 01:08:00 +010053
Victor Stinnerbb2fc5b2014-06-10 10:23:10 +020054.. method:: BaseEventLoop.is_closed()
55
56 Returns ``True`` if the event loop was closed.
57
58 .. versionadded:: 3.4.2
59
Victor Stinnerea3183f2013-12-03 01:08:00 +010060.. method:: BaseEventLoop.close()
61
Terry Jan Reedy9ff41802014-07-24 02:59:02 -040062 Close the event loop. The loop must not be running.
Victor Stinnerea3183f2013-12-03 01:08:00 +010063
64 This clears the queues and shuts down the executor, but does not wait for
65 the executor to finish.
66
67 This is idempotent and irreversible. No other methods should be called after
68 this one.
69
Victor Stinner8464c242014-11-28 13:15:41 +010070.. _asyncio-pass-keywords:
Victor Stinnerea3183f2013-12-03 01:08:00 +010071
72Calls
73-----
74
Victor Stinner8464c242014-11-28 13:15:41 +010075Most :mod:`asyncio` functions don't accept keywords. If you want to pass
76keywords to your callback, use :func:`functools.partial`. For example,
77``loop.call_soon(functools.partial(print, "Hello", flush=True))`` will call
78``print("Hello", flush=True)``.
79
80.. note::
81 :func:`functools.partial` is better than ``lambda`` functions, because
82 :mod:`asyncio` can inspect :func:`functools.partial` object to display
83 parameters in debug mode, whereas ``lambda`` functions have a poor
84 representation.
85
Victor Stinnerea3183f2013-12-03 01:08:00 +010086.. method:: BaseEventLoop.call_soon(callback, \*args)
87
Victor Stinner4d5115c2014-12-15 17:50:55 +010088 Arrange for a callback to be called as soon as possible. The callback is
89 called after :meth:`call_soon` returns, when control returns to the event
90 loop.
Victor Stinnerea3183f2013-12-03 01:08:00 +010091
92 This operates as a FIFO queue, callbacks are called in the order in
93 which they are registered. Each callback will be called exactly once.
94
95 Any positional arguments after the callback will be passed to the
96 callback when it is called.
97
Yury Selivanov43ee1c12014-02-19 20:58:44 -050098 An instance of :class:`asyncio.Handle` is returned.
99
Victor Stinner8464c242014-11-28 13:15:41 +0100100 :ref:`Use functools.partial to pass keywords to the callback
101 <asyncio-pass-keywords>`.
102
Victor Stinnerea3183f2013-12-03 01:08:00 +0100103.. method:: BaseEventLoop.call_soon_threadsafe(callback, \*args)
104
105 Like :meth:`call_soon`, but thread safe.
106
107
Victor Stinner45b27ed2014-02-01 02:36:43 +0100108.. _asyncio-delayed-calls:
109
Victor Stinnerea3183f2013-12-03 01:08:00 +0100110Delayed calls
111-------------
112
113The event loop has its own internal clock for computing timeouts.
114Which clock is used depends on the (platform-specific) event loop
115implementation; ideally it is a monotonic clock. This will generally be
116a different clock than :func:`time.time`.
117
Victor Stinnerfd9d3742014-02-18 09:37:43 +0100118.. note::
119
120 Timeouts (relative *delay* or absolute *when*) should not exceed one day.
121
Victor Stinner45b27ed2014-02-01 02:36:43 +0100122
Victor Stinnerea3183f2013-12-03 01:08:00 +0100123.. method:: BaseEventLoop.call_later(delay, callback, *args)
124
125 Arrange for the *callback* to be called after the given *delay*
126 seconds (either an int or float).
127
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500128 An instance of :class:`asyncio.Handle` is returned.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100129
130 *callback* will be called exactly once per call to :meth:`call_later`.
131 If two callbacks are scheduled for exactly the same time, it is
132 undefined which will be called first.
133
134 The optional positional *args* will be passed to the callback when it
135 is called. If you want the callback to be called with some named
136 arguments, use a closure or :func:`functools.partial`.
137
Victor Stinner8464c242014-11-28 13:15:41 +0100138 :ref:`Use functools.partial to pass keywords to the callback
139 <asyncio-pass-keywords>`.
140
Victor Stinnerea3183f2013-12-03 01:08:00 +0100141.. method:: BaseEventLoop.call_at(when, callback, *args)
142
143 Arrange for the *callback* to be called at the given absolute timestamp
Berker Peksagb5563992014-11-07 19:51:07 +0200144 *when* (an int or float), using the same time reference as
145 :meth:`BaseEventLoop.time`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100146
147 This method's behavior is the same as :meth:`call_later`.
148
Victor Stinner8464c242014-11-28 13:15:41 +0100149 :ref:`Use functools.partial to pass keywords to the callback
150 <asyncio-pass-keywords>`.
151
Victor Stinnerea3183f2013-12-03 01:08:00 +0100152.. method:: BaseEventLoop.time()
153
154 Return the current time, as a :class:`float` value, according to the
155 event loop's internal clock.
156
Victor Stinner3e09e322013-12-03 01:22:06 +0100157.. seealso::
158
159 The :func:`asyncio.sleep` function.
160
Victor Stinnerea3183f2013-12-03 01:08:00 +0100161
Victor Stinner530ef2f2014-07-08 12:39:10 +0200162Coroutines
163----------
164
165.. method:: BaseEventLoop.create_task(coro)
166
167 Schedule the execution of a :ref:`coroutine object <coroutine>`: wrap it in
168 a future. Return a :class:`Task` object.
169
170 Third-party event loops can use their own subclass of :class:`Task` for
171 interoperability. In this case, the result type is a subclass of
172 :class:`Task`.
173
Victor Stinner337e03f2014-08-11 01:11:13 +0200174 This method was added in Python 3.4.2. Use the :func:`async` function to
175 support also older Python versions.
Victor Stinner530ef2f2014-07-08 12:39:10 +0200176
177 .. versionadded:: 3.4.2
178
179
Victor Stinnerea3183f2013-12-03 01:08:00 +0100180Creating connections
Victor Stinner0c6f1ca2013-12-03 01:46:39 +0100181--------------------
Victor Stinnerea3183f2013-12-03 01:08:00 +0100182
183.. method:: BaseEventLoop.create_connection(protocol_factory, host=None, port=None, \*, ssl=None, family=0, proto=0, flags=0, sock=None, local_addr=None, server_hostname=None)
184
185 Create a streaming transport connection to a given Internet *host* and
Victor Stinnera6919aa2014-02-19 13:32:34 +0100186 *port*: socket family :py:data:`~socket.AF_INET` or
187 :py:data:`~socket.AF_INET6` depending on *host* (or *family* if specified),
188 socket type :py:data:`~socket.SOCK_STREAM`. *protocol_factory* must be a
189 callable returning a :ref:`protocol <asyncio-protocol>` instance.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100190
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500191 This method is a :ref:`coroutine <coroutine>` which will try to
Victor Stinnerea3183f2013-12-03 01:08:00 +0100192 establish the connection in the background. When successful, the
193 coroutine returns a ``(transport, protocol)`` pair.
194
195 The chronological synopsis of the underlying operation is as follows:
196
Victor Stinner9592edb2014-02-02 15:03:02 +0100197 #. The connection is established, and a :ref:`transport <asyncio-transport>`
Victor Stinnerea3183f2013-12-03 01:08:00 +0100198 is created to represent it.
199
200 #. *protocol_factory* is called without arguments and must return a
Victor Stinner9592edb2014-02-02 15:03:02 +0100201 :ref:`protocol <asyncio-protocol>` instance.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100202
203 #. The protocol instance is tied to the transport, and its
204 :meth:`connection_made` method is called.
205
206 #. The coroutine returns successfully with the ``(transport, protocol)``
207 pair.
208
209 The created transport is an implementation-dependent bidirectional stream.
210
211 .. note::
212 *protocol_factory* can be any kind of callable, not necessarily
213 a class. For example, if you want to use a pre-created
214 protocol instance, you can pass ``lambda: my_protocol``.
215
216 Options allowing to change how the connection is created:
217
218 * *ssl*: if given and not false, a SSL/TLS transport is created
219 (by default a plain TCP transport is created). If *ssl* is
220 a :class:`ssl.SSLContext` object, this context is used to create
221 the transport; if *ssl* is :const:`True`, a context with some
222 unspecified default settings is used.
223
Berker Peksag9c1dba22014-09-28 00:00:58 +0300224 .. seealso:: :ref:`SSL/TLS security considerations <ssl-security>`
Antoine Pitrouc5e075f2014-03-22 18:19:11 +0100225
Victor Stinnerea3183f2013-12-03 01:08:00 +0100226 * *server_hostname*, is only for use together with *ssl*,
227 and sets or overrides the hostname that the target server's certificate
228 will be matched against. By default the value of the *host* argument
229 is used. If *host* is empty, there is no default and you must pass a
230 value for *server_hostname*. If *server_hostname* is an empty
231 string, hostname matching is disabled (which is a serious security
232 risk, allowing for man-in-the-middle-attacks).
233
234 * *family*, *proto*, *flags* are the optional address family, protocol
235 and flags to be passed through to getaddrinfo() for *host* resolution.
236 If given, these should all be integers from the corresponding
237 :mod:`socket` module constants.
238
239 * *sock*, if given, should be an existing, already connected
240 :class:`socket.socket` object to be used by the transport.
241 If *sock* is given, none of *host*, *port*, *family*, *proto*, *flags*
242 and *local_addr* should be specified.
243
244 * *local_addr*, if given, is a ``(local_host, local_port)`` tuple used
245 to bind the socket to locally. The *local_host* and *local_port*
246 are looked up using getaddrinfo(), similarly to *host* and *port*.
247
Victor Stinner41f3c3f2014-08-31 14:47:37 +0200248 On Windows with :class:`ProactorEventLoop`, SSL/TLS is not supported.
249
Victor Stinnerc8ea8132014-01-23 11:02:09 +0100250 .. seealso::
251
252 The :func:`open_connection` function can be used to get a pair of
253 (:class:`StreamReader`, :class:`StreamWriter`) instead of a protocol.
254
Victor Stinnerea3183f2013-12-03 01:08:00 +0100255
Victor Stinnera6919aa2014-02-19 13:32:34 +0100256.. method:: BaseEventLoop.create_datagram_endpoint(protocol_factory, local_addr=None, remote_addr=None, \*, family=0, proto=0, flags=0)
257
258 Create datagram connection: socket family :py:data:`~socket.AF_INET` or
259 :py:data:`~socket.AF_INET6` depending on *host* (or *family* if specified),
260 socket type :py:data:`~socket.SOCK_DGRAM`.
261
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500262 This method is a :ref:`coroutine <coroutine>` which will try to
Victor Stinnera6919aa2014-02-19 13:32:34 +0100263 establish the connection in the background. When successful, the
264 coroutine returns a ``(transport, protocol)`` pair.
265
266 See the :meth:`BaseEventLoop.create_connection` method for parameters.
267
Victor Stinner41f3c3f2014-08-31 14:47:37 +0200268 On Windows with :class:`ProactorEventLoop`, this method is not supported.
269
Victor Stinnerc7edffd2014-10-12 11:24:26 +0200270 See :ref:`UDP echo client protocol <asyncio-udp-echo-client-protocol>` and
271 :ref:`UDP echo server protocol <asyncio-udp-echo-server-protocol>` examples.
272
Victor Stinnera6919aa2014-02-19 13:32:34 +0100273
274.. method:: BaseEventLoop.create_unix_connection(protocol_factory, path, \*, ssl=None, sock=None, server_hostname=None)
275
276 Create UNIX connection: socket family :py:data:`~socket.AF_UNIX`, socket
277 type :py:data:`~socket.SOCK_STREAM`. The :py:data:`~socket.AF_UNIX` socket
278 family is used to communicate between processes on the same machine
279 efficiently.
280
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500281 This method is a :ref:`coroutine <coroutine>` which will try to
Victor Stinnera6919aa2014-02-19 13:32:34 +0100282 establish the connection in the background. When successful, the
283 coroutine returns a ``(transport, protocol)`` pair.
284
285 See the :meth:`BaseEventLoop.create_connection` method for parameters.
286
287 Availability: UNIX.
288
289
Victor Stinnerea3183f2013-12-03 01:08:00 +0100290Creating listening connections
291------------------------------
292
293.. method:: BaseEventLoop.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)
294
Victor Stinner33f6abe2014-10-12 20:36:04 +0200295 Create a TCP server (socket type :data:`~socket.SOCK_STREAM`) bound to
296 *host* and *port*.
297
298 Return a :class:`Server` object, its :attr:`~Server.sockets` attribute
299 contains created sockets. Use the :meth:`Server.close` method to stop the
300 server: close listening sockets.
301
302 Parameters:
303
304 * If *host* is an empty string or ``None``, all interfaces are assumed
305 and a list of multiple sockets will be returned (most likely
306 one for IPv4 and another one for IPv6).
307
308 * *family* can be set to either :data:`socket.AF_INET` or
309 :data:`~socket.AF_INET6` to force the socket to use IPv4 or IPv6. If not set
310 it will be determined from host (defaults to :data:`socket.AF_UNSPEC`).
311
312 * *flags* is a bitmask for :meth:`getaddrinfo`.
313
314 * *sock* can optionally be specified in order to use a preexisting
315 socket object. If specified, *host* and *port* should be omitted (must be
316 :const:`None`).
317
318 * *backlog* is the maximum number of queued connections passed to
319 :meth:`~socket.socket.listen` (defaults to 100).
320
321 * *ssl* can be set to an :class:`~ssl.SSLContext` to enable SSL over the
322 accepted connections.
323
324 * *reuse_address* tells the kernel to reuse a local socket in
325 TIME_WAIT state, without waiting for its natural timeout to
326 expire. If not specified will automatically be set to True on
327 UNIX.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100328
Victor Stinnerd1432092014-06-19 17:11:49 +0200329 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100330
Victor Stinner41f3c3f2014-08-31 14:47:37 +0200331 On Windows with :class:`ProactorEventLoop`, SSL/TLS is not supported.
332
Victor Stinnerc8ea8132014-01-23 11:02:09 +0100333 .. seealso::
334
335 The function :func:`start_server` creates a (:class:`StreamReader`,
336 :class:`StreamWriter`) pair and calls back a function with this pair.
337
Victor Stinnerea3183f2013-12-03 01:08:00 +0100338
Victor Stinnera6919aa2014-02-19 13:32:34 +0100339.. method:: BaseEventLoop.create_unix_server(protocol_factory, path=None, \*, sock=None, backlog=100, ssl=None)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100340
Victor Stinnera6919aa2014-02-19 13:32:34 +0100341 Similar to :meth:`BaseEventLoop.create_server`, but specific to the
342 socket family :py:data:`~socket.AF_UNIX`.
343
344 Availability: UNIX.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100345
346
Victor Stinnerc1567df2014-02-08 23:22:58 +0100347Watch file descriptors
348----------------------
349
Victor Stinner41f3c3f2014-08-31 14:47:37 +0200350On Windows with :class:`SelectorEventLoop`, only socket handles are supported
351(ex: pipe file descriptors are not supported).
352
353On Windows with :class:`ProactorEventLoop`, these methods are not supported.
354
Victor Stinnerc1567df2014-02-08 23:22:58 +0100355.. method:: BaseEventLoop.add_reader(fd, callback, \*args)
356
357 Start watching the file descriptor for read availability and then call the
358 *callback* with specified arguments.
359
Victor Stinner8464c242014-11-28 13:15:41 +0100360 :ref:`Use functools.partial to pass keywords to the callback
361 <asyncio-pass-keywords>`.
362
Victor Stinnerc1567df2014-02-08 23:22:58 +0100363.. method:: BaseEventLoop.remove_reader(fd)
364
365 Stop watching the file descriptor for read availability.
366
367.. method:: BaseEventLoop.add_writer(fd, callback, \*args)
368
369 Start watching the file descriptor for write availability and then call the
370 *callback* with specified arguments.
371
Victor Stinner8464c242014-11-28 13:15:41 +0100372 :ref:`Use functools.partial to pass keywords to the callback
373 <asyncio-pass-keywords>`.
374
Victor Stinnerc1567df2014-02-08 23:22:58 +0100375.. method:: BaseEventLoop.remove_writer(fd)
376
377 Stop watching the file descriptor for write availability.
378
Victor Stinner04e6df32014-10-11 16:16:27 +0200379The :ref:`watch a file descriptor for read events <asyncio-watch-read-event>`
380example uses the low-level :meth:`BaseEventLoop.add_reader` method to register
381the file descriptor of a socket.
382
Victor Stinnerc1567df2014-02-08 23:22:58 +0100383
384Low-level socket operations
385---------------------------
386
387.. method:: BaseEventLoop.sock_recv(sock, nbytes)
388
389 Receive data from the socket. The return value is a bytes object
390 representing the data received. The maximum amount of data to be received
391 at once is specified by *nbytes*.
392
Victor Stinnerd84fd732014-08-26 01:01:59 +0200393 With :class:`SelectorEventLoop` event loop, the socket *sock* must be
394 non-blocking.
Victor Stinnerec2ce092014-07-29 23:12:22 +0200395
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500396 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100397
398 .. seealso::
399
400 The :meth:`socket.socket.recv` method.
401
402.. method:: BaseEventLoop.sock_sendall(sock, data)
403
404 Send data to the socket. The socket must be connected to a remote socket.
405 This method continues to send data from *data* until either all data has
406 been sent or an error occurs. ``None`` is returned on success. On error,
407 an exception is raised, and there is no way to determine how much data, if
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500408 any, was successfully processed by the receiving end of the connection.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100409
Victor Stinnerd84fd732014-08-26 01:01:59 +0200410 With :class:`SelectorEventLoop` event loop, the socket *sock* must be
411 non-blocking.
Victor Stinnerec2ce092014-07-29 23:12:22 +0200412
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500413 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100414
415 .. seealso::
416
417 The :meth:`socket.socket.sendall` method.
418
419.. method:: BaseEventLoop.sock_connect(sock, address)
420
421 Connect to a remote socket at *address*.
422
Victor Stinner1b0580b2014-02-13 09:24:37 +0100423 The *address* must be already resolved to avoid the trap of hanging the
424 entire event loop when the address requires doing a DNS lookup. For
425 example, it must be an IP address, not an hostname, for
426 :py:data:`~socket.AF_INET` and :py:data:`~socket.AF_INET6` address families.
427 Use :meth:`getaddrinfo` to resolve the hostname asynchronously.
428
Victor Stinnerd84fd732014-08-26 01:01:59 +0200429 With :class:`SelectorEventLoop` event loop, the socket *sock* must be
430 non-blocking.
Victor Stinnerec2ce092014-07-29 23:12:22 +0200431
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500432 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100433
434 .. seealso::
435
436 The :meth:`BaseEventLoop.create_connection` method, the
437 :func:`open_connection` function and the :meth:`socket.socket.connect`
438 method.
439
440
441.. method:: BaseEventLoop.sock_accept(sock)
442
443 Accept a connection. The socket must be bound to an address and listening
444 for connections. The return value is a pair ``(conn, address)`` where *conn*
445 is a *new* socket object usable to send and receive data on the connection,
446 and *address* is the address bound to the socket on the other end of the
447 connection.
448
Victor Stinnerec2ce092014-07-29 23:12:22 +0200449 The socket *sock* must be non-blocking.
450
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500451 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100452
453 .. seealso::
454
455 The :meth:`BaseEventLoop.create_server` method, the :func:`start_server`
456 function and the :meth:`socket.socket.accept` method.
457
458
459Resolve host name
460-----------------
Victor Stinnerea3183f2013-12-03 01:08:00 +0100461
462.. method:: BaseEventLoop.getaddrinfo(host, port, \*, family=0, type=0, proto=0, flags=0)
463
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500464 This method is a :ref:`coroutine <coroutine>`, similar to
465 :meth:`socket.getaddrinfo` function but non-blocking.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100466
467.. method:: BaseEventLoop.getnameinfo(sockaddr, flags=0)
468
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500469 This method is a :ref:`coroutine <coroutine>`, similar to
470 :meth:`socket.getnameinfo` function but non-blocking.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100471
472
Victor Stinner984600f2014-03-25 09:40:26 +0100473Connect pipes
474-------------
Victor Stinnerea3183f2013-12-03 01:08:00 +0100475
Victor Stinner41f3c3f2014-08-31 14:47:37 +0200476On Windows with :class:`SelectorEventLoop`, these methods are not supported.
477Use :class:`ProactorEventLoop` to support pipes on Windows.
478
Victor Stinnerea3183f2013-12-03 01:08:00 +0100479.. method:: BaseEventLoop.connect_read_pipe(protocol_factory, pipe)
480
Victor Stinnerd84fd732014-08-26 01:01:59 +0200481 Register read pipe in eventloop.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100482
483 *protocol_factory* should instantiate object with :class:`Protocol`
Victor Stinnera5b257a2014-05-29 00:14:03 +0200484 interface. *pipe* is a :term:`file-like object <file object>`.
485 Return pair ``(transport, protocol)``, where *transport* supports the
Victor Stinnerea3183f2013-12-03 01:08:00 +0100486 :class:`ReadTransport` interface.
487
Victor Stinnerd84fd732014-08-26 01:01:59 +0200488 With :class:`SelectorEventLoop` event loop, the *pipe* is set to
489 non-blocking mode.
490
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500491 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100492
493.. method:: BaseEventLoop.connect_write_pipe(protocol_factory, pipe)
494
495 Register write pipe in eventloop.
496
497 *protocol_factory* should instantiate object with :class:`BaseProtocol`
Victor Stinner2cef3002014-10-23 22:38:46 +0200498 interface. *pipe* is :term:`file-like object <file object>`.
499 Return pair ``(transport, protocol)``, where *transport* supports
Victor Stinnerea3183f2013-12-03 01:08:00 +0100500 :class:`WriteTransport` interface.
501
Victor Stinnerd84fd732014-08-26 01:01:59 +0200502 With :class:`SelectorEventLoop` event loop, the *pipe* is set to
503 non-blocking mode.
504
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500505 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100506
Victor Stinner08444382014-02-02 22:43:39 +0100507.. seealso::
508
Victor Stinner984600f2014-03-25 09:40:26 +0100509 The :meth:`BaseEventLoop.subprocess_exec` and
510 :meth:`BaseEventLoop.subprocess_shell` methods.
Victor Stinner08444382014-02-02 22:43:39 +0100511
Victor Stinnerea3183f2013-12-03 01:08:00 +0100512
Victor Stinner8b863482014-01-27 10:07:50 +0100513UNIX signals
514------------
515
516Availability: UNIX only.
517
518.. method:: BaseEventLoop.add_signal_handler(signum, callback, \*args)
519
520 Add a handler for a signal.
521
522 Raise :exc:`ValueError` if the signal number is invalid or uncatchable.
523 Raise :exc:`RuntimeError` if there is a problem setting up the handler.
524
Victor Stinner8464c242014-11-28 13:15:41 +0100525 :ref:`Use functools.partial to pass keywords to the callback
526 <asyncio-pass-keywords>`.
527
Victor Stinner8b863482014-01-27 10:07:50 +0100528.. method:: BaseEventLoop.remove_signal_handler(sig)
529
530 Remove a handler for a signal.
531
532 Return ``True`` if a signal handler was removed, ``False`` if not.
533
534.. seealso::
535
536 The :mod:`signal` module.
537
538
Victor Stinnerea3183f2013-12-03 01:08:00 +0100539Executor
540--------
541
542Call a function in an :class:`~concurrent.futures.Executor` (pool of threads or
543pool of processes). By default, an event loop uses a thread pool executor
544(:class:`~concurrent.futures.ThreadPoolExecutor`).
545
546.. method:: BaseEventLoop.run_in_executor(executor, callback, \*args)
547
548 Arrange for a callback to be called in the specified executor.
549
Larry Hastings3732ed22014-03-15 21:13:56 -0700550 The *executor* argument should be an :class:`~concurrent.futures.Executor`
551 instance. The default executor is used if *executor* is ``None``.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100552
Victor Stinner8464c242014-11-28 13:15:41 +0100553 :ref:`Use functools.partial to pass keywords to the callback
554 <asyncio-pass-keywords>`.
555
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500556 This method is a :ref:`coroutine <coroutine>`.
557
Victor Stinnerea3183f2013-12-03 01:08:00 +0100558.. method:: BaseEventLoop.set_default_executor(executor)
559
560 Set the default executor used by :meth:`run_in_executor`.
561
562
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500563Error Handling API
564------------------
565
566Allows to customize how exceptions are handled in the event loop.
567
568.. method:: BaseEventLoop.set_exception_handler(handler)
569
570 Set *handler* as the new event loop exception handler.
571
572 If *handler* is ``None``, the default exception handler will
573 be set.
574
575 If *handler* is a callable object, it should have a
576 matching signature to ``(loop, context)``, where ``loop``
577 will be a reference to the active event loop, ``context``
578 will be a ``dict`` object (see :meth:`call_exception_handler`
579 documentation for details about context).
580
581.. method:: BaseEventLoop.default_exception_handler(context)
582
583 Default exception handler.
584
585 This is called when an exception occurs and no exception
586 handler is set, and can be called by a custom exception
587 handler that wants to defer to the default behavior.
588
589 *context* parameter has the same meaning as in
590 :meth:`call_exception_handler`.
591
592.. method:: BaseEventLoop.call_exception_handler(context)
593
594 Call the current event loop exception handler.
595
596 *context* is a ``dict`` object containing the following keys
597 (new keys may be introduced later):
598
599 * 'message': Error message;
600 * 'exception' (optional): Exception object;
601 * 'future' (optional): :class:`asyncio.Future` instance;
602 * 'handle' (optional): :class:`asyncio.Handle` instance;
603 * 'protocol' (optional): :ref:`Protocol <asyncio-protocol>` instance;
604 * 'transport' (optional): :ref:`Transport <asyncio-transport>` instance;
605 * 'socket' (optional): :class:`socket.socket` instance.
606
607 .. note::
608
609 Note: this method should not be overloaded in subclassed
610 event loops. For any custom exception handling, use
611 :meth:`set_exception_handler()` method.
612
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100613Debug mode
614----------
615
616.. method:: BaseEventLoop.get_debug()
617
Victor Stinner7b7120e2014-06-23 00:12:14 +0200618 Get the debug mode (:class:`bool`) of the event loop.
619
620 The default value is ``True`` if the environment variable
621 :envvar:`PYTHONASYNCIODEBUG` is set to a non-empty string, ``False``
622 otherwise.
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100623
Victor Stinner64d750b2014-06-18 03:25:23 +0200624 .. versionadded:: 3.4.2
625
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100626.. method:: BaseEventLoop.set_debug(enabled: bool)
627
628 Set the debug mode of the event loop.
629
Victor Stinner64d750b2014-06-18 03:25:23 +0200630 .. versionadded:: 3.4.2
631
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100632.. seealso::
633
Victor Stinner62511fd2014-06-23 00:36:11 +0200634 The :ref:`debug mode of asyncio <asyncio-debug-mode>`.
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100635
Victor Stinner8c462c52014-01-24 18:11:43 +0100636Server
637------
638
Victor Stinner8ebeb032014-07-11 23:47:40 +0200639.. class:: Server
Victor Stinner8c462c52014-01-24 18:11:43 +0100640
Victor Stinner8ebeb032014-07-11 23:47:40 +0200641 Server listening on sockets.
642
643 Object created by the :meth:`BaseEventLoop.create_server` method and the
644 :func:`start_server` function. Don't instanciate the class directly.
Victor Stinner8c462c52014-01-24 18:11:43 +0100645
646 .. method:: close()
647
Victor Stinner4bfb14a2014-07-12 03:20:24 +0200648 Stop serving: close listening sockets and set the :attr:`sockets`
649 attribute to ``None``.
650
651 The sockets that represent existing incoming client connections are
652 leaved open.
Victor Stinner8ebeb032014-07-11 23:47:40 +0200653
654 The server is closed asynchonously, use the :meth:`wait_closed` coroutine
655 to wait until the server is closed.
Victor Stinner8c462c52014-01-24 18:11:43 +0100656
657 .. method:: wait_closed()
658
Victor Stinner8ebeb032014-07-11 23:47:40 +0200659 Wait until the :meth:`close` method completes.
660
661 This method is a :ref:`coroutine <coroutine>`.
662
663 .. attribute:: sockets
664
665 List of :class:`socket.socket` objects the server is listening to, or
666 ``None`` if the server is closed.
Victor Stinner8c462c52014-01-24 18:11:43 +0100667
668
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500669Handle
670------
671
672.. class:: Handle
673
674 A callback wrapper object returned by :func:`BaseEventLoop.call_soon`,
675 :func:`BaseEventLoop.call_soon_threadsafe`, :func:`BaseEventLoop.call_later`,
676 and :func:`BaseEventLoop.call_at`.
677
678 .. method:: cancel()
679
Victor Stinneraea82292014-07-08 23:42:38 +0200680 Cancel the call.
681
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500682
Victor Stinner6888b962014-10-11 16:15:58 +0200683Event loop examples
Victor Stinnera092a612015-01-09 15:58:41 +0100684-------------------
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500685
Victor Stinner3e09e322013-12-03 01:22:06 +0100686.. _asyncio-hello-world-callback:
Victor Stinnerea3183f2013-12-03 01:08:00 +0100687
Victor Stinner7f314ed2014-10-15 18:49:16 +0200688Hello World with call_soon()
Victor Stinnera092a612015-01-09 15:58:41 +0100689^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Victor Stinnerea3183f2013-12-03 01:08:00 +0100690
Victor Stinner7f314ed2014-10-15 18:49:16 +0200691Example using the :meth:`BaseEventLoop.call_soon` method to schedule a
692callback. The callback displays ``"Hello World"`` and then stops the event
693loop::
Victor Stinnerea3183f2013-12-03 01:08:00 +0100694
695 import asyncio
696
Victor Stinner7f314ed2014-10-15 18:49:16 +0200697 def hello_world(loop):
Victor Stinnerea3183f2013-12-03 01:08:00 +0100698 print('Hello World')
Victor Stinner7f314ed2014-10-15 18:49:16 +0200699 loop.stop()
Victor Stinnerea3183f2013-12-03 01:08:00 +0100700
701 loop = asyncio.get_event_loop()
Victor Stinner7f314ed2014-10-15 18:49:16 +0200702
703 # Schedule a call to hello_world()
704 loop.call_soon(hello_world, loop)
705
706 # Blocking call interrupted by loop.stop()
707 loop.run_forever()
708 loop.close()
Victor Stinnerea3183f2013-12-03 01:08:00 +0100709
Victor Stinner3e09e322013-12-03 01:22:06 +0100710.. seealso::
Victor Stinnerea3183f2013-12-03 01:08:00 +0100711
Victor Stinner6888b962014-10-11 16:15:58 +0200712 The :ref:`Hello World coroutine <asyncio-hello-world-coroutine>` example
713 uses a :ref:`coroutine <coroutine>`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100714
Victor Stinner8b863482014-01-27 10:07:50 +0100715
Victor Stinner7f314ed2014-10-15 18:49:16 +0200716.. _asyncio-date-callback:
717
718Display the current date with call_later()
Victor Stinnera092a612015-01-09 15:58:41 +0100719^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Victor Stinner7f314ed2014-10-15 18:49:16 +0200720
721Example of callback displaying the current date every second. The callback uses
722the :meth:`BaseEventLoop.call_later` method to reschedule itself during 5
723seconds, and then stops the event loop::
724
725 import asyncio
726 import datetime
727
728 def display_date(end_time, loop):
729 print(datetime.datetime.now())
730 if (loop.time() + 1.0) < end_time:
731 loop.call_later(1, display_date, end_time, loop)
732 else:
733 loop.stop()
734
735 loop = asyncio.get_event_loop()
736
737 # Schedule the first call to display_date()
738 end_time = loop.time() + 5.0
739 loop.call_soon(display_date, end_time, loop)
740
741 # Blocking call interrupted by loop.stop()
742 loop.run_forever()
743 loop.close()
744
745.. seealso::
746
747 The :ref:`coroutine displaying the current date
748 <asyncio-date-coroutine>` example uses a :ref:`coroutine
749 <coroutine>`.
750
751
Victor Stinner04e6df32014-10-11 16:16:27 +0200752.. _asyncio-watch-read-event:
Victor Stinner8b863482014-01-27 10:07:50 +0100753
Victor Stinner04e6df32014-10-11 16:16:27 +0200754Watch a file descriptor for read events
Victor Stinnera092a612015-01-09 15:58:41 +0100755^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Victor Stinner04e6df32014-10-11 16:16:27 +0200756
757Wait until a file descriptor received some data using the
758:meth:`BaseEventLoop.add_reader` method and then close the event loop::
759
760 import asyncio
Victor Stinnerccd8e342014-10-11 16:30:02 +0200761 try:
762 from socket import socketpair
763 except ImportError:
764 from asyncio.windows_utils import socketpair
Victor Stinner04e6df32014-10-11 16:16:27 +0200765
766 # Create a pair of connected file descriptors
Victor Stinnerccd8e342014-10-11 16:30:02 +0200767 rsock, wsock = socketpair()
Victor Stinner04e6df32014-10-11 16:16:27 +0200768 loop = asyncio.get_event_loop()
769
770 def reader():
771 data = rsock.recv(100)
772 print("Received:", data.decode())
Victor Stinner2cef3002014-10-23 22:38:46 +0200773 # We are done: unregister the file descriptor
Victor Stinner04e6df32014-10-11 16:16:27 +0200774 loop.remove_reader(rsock)
775 # Stop the event loop
776 loop.stop()
777
Victor Stinner2cef3002014-10-23 22:38:46 +0200778 # Register the file descriptor for read event
Victor Stinner04e6df32014-10-11 16:16:27 +0200779 loop.add_reader(rsock, reader)
780
781 # Simulate the reception of data from the network
782 loop.call_soon(wsock.send, 'abc'.encode())
783
784 # Run the event loop
785 loop.run_forever()
786
787 # We are done, close sockets and the event loop
788 rsock.close()
789 wsock.close()
790 loop.close()
791
792.. seealso::
793
794 The :ref:`register an open socket to wait for data using a protocol
795 <asyncio-register-socket>` example uses a low-level protocol created by the
796 :meth:`BaseEventLoop.create_connection` method.
797
798 The :ref:`register an open socket to wait for data using streams
799 <asyncio-register-socket-streams>` example uses high-level streams
800 created by the :func:`open_connection` function in a coroutine.
801
802
803Set signal handlers for SIGINT and SIGTERM
Victor Stinnera092a612015-01-09 15:58:41 +0100804^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Victor Stinner04e6df32014-10-11 16:16:27 +0200805
806Register handlers for signals :py:data:`SIGINT` and :py:data:`SIGTERM` using
807the :meth:`BaseEventLoop.add_signal_handler` method::
Victor Stinner8b863482014-01-27 10:07:50 +0100808
809 import asyncio
810 import functools
811 import os
812 import signal
813
814 def ask_exit(signame):
815 print("got signal %s: exit" % signame)
816 loop.stop()
817
818 loop = asyncio.get_event_loop()
819 for signame in ('SIGINT', 'SIGTERM'):
820 loop.add_signal_handler(getattr(signal, signame),
821 functools.partial(ask_exit, signame))
822
823 print("Event loop running forever, press CTRL+c to interrupt.")
824 print("pid %s: send SIGINT or SIGTERM to exit." % os.getpid())
Victor Stinner63b21a82014-07-05 15:38:59 +0200825 try:
826 loop.run_forever()
827 finally:
828 loop.close()
Victor Stinner2cef3002014-10-23 22:38:46 +0200829
830This example only works on UNIX.