blob: f2c894569b0e046910683fdb74cb01a5b5efea31 [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
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100183.. coroutinemethod:: 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)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100184
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 Stinnerbdd574d2015-02-12 22:49:18 +0100256.. coroutinemethod:: BaseEventLoop.create_datagram_endpoint(protocol_factory, local_addr=None, remote_addr=None, \*, family=0, proto=0, flags=0)
Victor Stinnera6919aa2014-02-19 13:32:34 +0100257
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
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100274.. coroutinemethod:: BaseEventLoop.create_unix_connection(protocol_factory, path, \*, ssl=None, sock=None, server_hostname=None)
Victor Stinnera6919aa2014-02-19 13:32:34 +0100275
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
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100293.. coroutinemethod:: 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)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100294
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 Stinnerbdd574d2015-02-12 22:49:18 +0100339.. coroutinemethod:: 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
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100344 This method is a :ref:`coroutine <coroutine>`.
345
Victor Stinnera6919aa2014-02-19 13:32:34 +0100346 Availability: UNIX.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100347
348
Victor Stinnerc1567df2014-02-08 23:22:58 +0100349Watch file descriptors
350----------------------
351
Victor Stinner41f3c3f2014-08-31 14:47:37 +0200352On Windows with :class:`SelectorEventLoop`, only socket handles are supported
353(ex: pipe file descriptors are not supported).
354
355On Windows with :class:`ProactorEventLoop`, these methods are not supported.
356
Victor Stinnerc1567df2014-02-08 23:22:58 +0100357.. method:: BaseEventLoop.add_reader(fd, callback, \*args)
358
359 Start watching the file descriptor for read availability and then call the
360 *callback* with specified arguments.
361
Victor Stinner8464c242014-11-28 13:15:41 +0100362 :ref:`Use functools.partial to pass keywords to the callback
363 <asyncio-pass-keywords>`.
364
Victor Stinnerc1567df2014-02-08 23:22:58 +0100365.. method:: BaseEventLoop.remove_reader(fd)
366
367 Stop watching the file descriptor for read availability.
368
369.. method:: BaseEventLoop.add_writer(fd, callback, \*args)
370
371 Start watching the file descriptor for write availability and then call the
372 *callback* with specified arguments.
373
Victor Stinner8464c242014-11-28 13:15:41 +0100374 :ref:`Use functools.partial to pass keywords to the callback
375 <asyncio-pass-keywords>`.
376
Victor Stinnerc1567df2014-02-08 23:22:58 +0100377.. method:: BaseEventLoop.remove_writer(fd)
378
379 Stop watching the file descriptor for write availability.
380
Victor Stinner04e6df32014-10-11 16:16:27 +0200381The :ref:`watch a file descriptor for read events <asyncio-watch-read-event>`
382example uses the low-level :meth:`BaseEventLoop.add_reader` method to register
383the file descriptor of a socket.
384
Victor Stinnerc1567df2014-02-08 23:22:58 +0100385
386Low-level socket operations
387---------------------------
388
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100389.. coroutinemethod:: BaseEventLoop.sock_recv(sock, nbytes)
Victor Stinnerc1567df2014-02-08 23:22:58 +0100390
391 Receive data from the socket. The return value is a bytes object
392 representing the data received. The maximum amount of data to be received
393 at once is specified by *nbytes*.
394
Victor Stinnerd84fd732014-08-26 01:01:59 +0200395 With :class:`SelectorEventLoop` event loop, the socket *sock* must be
396 non-blocking.
Victor Stinnerec2ce092014-07-29 23:12:22 +0200397
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500398 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100399
400 .. seealso::
401
402 The :meth:`socket.socket.recv` method.
403
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100404.. coroutinemethod:: BaseEventLoop.sock_sendall(sock, data)
Victor Stinnerc1567df2014-02-08 23:22:58 +0100405
406 Send data to the socket. The socket must be connected to a remote socket.
407 This method continues to send data from *data* until either all data has
408 been sent or an error occurs. ``None`` is returned on success. On error,
409 an exception is raised, and there is no way to determine how much data, if
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500410 any, was successfully processed by the receiving end of the connection.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100411
Victor Stinnerd84fd732014-08-26 01:01:59 +0200412 With :class:`SelectorEventLoop` event loop, the socket *sock* must be
413 non-blocking.
Victor Stinnerec2ce092014-07-29 23:12:22 +0200414
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500415 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100416
417 .. seealso::
418
419 The :meth:`socket.socket.sendall` method.
420
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100421.. coroutinemethod:: BaseEventLoop.sock_connect(sock, address)
Victor Stinnerc1567df2014-02-08 23:22:58 +0100422
423 Connect to a remote socket at *address*.
424
Victor Stinner1b0580b2014-02-13 09:24:37 +0100425 The *address* must be already resolved to avoid the trap of hanging the
426 entire event loop when the address requires doing a DNS lookup. For
427 example, it must be an IP address, not an hostname, for
428 :py:data:`~socket.AF_INET` and :py:data:`~socket.AF_INET6` address families.
429 Use :meth:`getaddrinfo` to resolve the hostname asynchronously.
430
Victor Stinnerd84fd732014-08-26 01:01:59 +0200431 With :class:`SelectorEventLoop` event loop, the socket *sock* must be
432 non-blocking.
Victor Stinnerec2ce092014-07-29 23:12:22 +0200433
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500434 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100435
436 .. seealso::
437
438 The :meth:`BaseEventLoop.create_connection` method, the
439 :func:`open_connection` function and the :meth:`socket.socket.connect`
440 method.
441
442
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100443.. coroutinemethod:: BaseEventLoop.sock_accept(sock)
Victor Stinnerc1567df2014-02-08 23:22:58 +0100444
445 Accept a connection. The socket must be bound to an address and listening
446 for connections. The return value is a pair ``(conn, address)`` where *conn*
447 is a *new* socket object usable to send and receive data on the connection,
448 and *address* is the address bound to the socket on the other end of the
449 connection.
450
Victor Stinnerec2ce092014-07-29 23:12:22 +0200451 The socket *sock* must be non-blocking.
452
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500453 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100454
455 .. seealso::
456
457 The :meth:`BaseEventLoop.create_server` method, the :func:`start_server`
458 function and the :meth:`socket.socket.accept` method.
459
460
461Resolve host name
462-----------------
Victor Stinnerea3183f2013-12-03 01:08:00 +0100463
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100464.. coroutinemethod:: BaseEventLoop.getaddrinfo(host, port, \*, family=0, type=0, proto=0, flags=0)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100465
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500466 This method is a :ref:`coroutine <coroutine>`, similar to
467 :meth:`socket.getaddrinfo` function but non-blocking.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100468
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100469.. coroutinemethod:: BaseEventLoop.getnameinfo(sockaddr, flags=0)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100470
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500471 This method is a :ref:`coroutine <coroutine>`, similar to
472 :meth:`socket.getnameinfo` function but non-blocking.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100473
474
Victor Stinner984600f2014-03-25 09:40:26 +0100475Connect pipes
476-------------
Victor Stinnerea3183f2013-12-03 01:08:00 +0100477
Victor Stinner41f3c3f2014-08-31 14:47:37 +0200478On Windows with :class:`SelectorEventLoop`, these methods are not supported.
479Use :class:`ProactorEventLoop` to support pipes on Windows.
480
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100481.. coroutinemethod:: BaseEventLoop.connect_read_pipe(protocol_factory, pipe)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100482
Victor Stinnerd84fd732014-08-26 01:01:59 +0200483 Register read pipe in eventloop.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100484
485 *protocol_factory* should instantiate object with :class:`Protocol`
Victor Stinnera5b257a2014-05-29 00:14:03 +0200486 interface. *pipe* is a :term:`file-like object <file object>`.
487 Return pair ``(transport, protocol)``, where *transport* supports the
Victor Stinnerea3183f2013-12-03 01:08:00 +0100488 :class:`ReadTransport` interface.
489
Victor Stinnerd84fd732014-08-26 01:01:59 +0200490 With :class:`SelectorEventLoop` event loop, the *pipe* is set to
491 non-blocking mode.
492
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500493 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100494
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100495.. coroutinemethod:: BaseEventLoop.connect_write_pipe(protocol_factory, pipe)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100496
497 Register write pipe in eventloop.
498
499 *protocol_factory* should instantiate object with :class:`BaseProtocol`
Victor Stinner2cef3002014-10-23 22:38:46 +0200500 interface. *pipe* is :term:`file-like object <file object>`.
501 Return pair ``(transport, protocol)``, where *transport* supports
Victor Stinnerea3183f2013-12-03 01:08:00 +0100502 :class:`WriteTransport` interface.
503
Victor Stinnerd84fd732014-08-26 01:01:59 +0200504 With :class:`SelectorEventLoop` event loop, the *pipe* is set to
505 non-blocking mode.
506
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500507 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100508
Victor Stinner08444382014-02-02 22:43:39 +0100509.. seealso::
510
Victor Stinner984600f2014-03-25 09:40:26 +0100511 The :meth:`BaseEventLoop.subprocess_exec` and
512 :meth:`BaseEventLoop.subprocess_shell` methods.
Victor Stinner08444382014-02-02 22:43:39 +0100513
Victor Stinnerea3183f2013-12-03 01:08:00 +0100514
Victor Stinner8b863482014-01-27 10:07:50 +0100515UNIX signals
516------------
517
518Availability: UNIX only.
519
520.. method:: BaseEventLoop.add_signal_handler(signum, callback, \*args)
521
522 Add a handler for a signal.
523
524 Raise :exc:`ValueError` if the signal number is invalid or uncatchable.
525 Raise :exc:`RuntimeError` if there is a problem setting up the handler.
526
Victor Stinner8464c242014-11-28 13:15:41 +0100527 :ref:`Use functools.partial to pass keywords to the callback
528 <asyncio-pass-keywords>`.
529
Victor Stinner8b863482014-01-27 10:07:50 +0100530.. method:: BaseEventLoop.remove_signal_handler(sig)
531
532 Remove a handler for a signal.
533
534 Return ``True`` if a signal handler was removed, ``False`` if not.
535
536.. seealso::
537
538 The :mod:`signal` module.
539
540
Victor Stinnerea3183f2013-12-03 01:08:00 +0100541Executor
542--------
543
544Call a function in an :class:`~concurrent.futures.Executor` (pool of threads or
545pool of processes). By default, an event loop uses a thread pool executor
546(:class:`~concurrent.futures.ThreadPoolExecutor`).
547
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100548.. coroutinemethod:: BaseEventLoop.run_in_executor(executor, callback, \*args)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100549
550 Arrange for a callback to be called in the specified executor.
551
Larry Hastings3732ed22014-03-15 21:13:56 -0700552 The *executor* argument should be an :class:`~concurrent.futures.Executor`
553 instance. The default executor is used if *executor* is ``None``.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100554
Victor Stinner8464c242014-11-28 13:15:41 +0100555 :ref:`Use functools.partial to pass keywords to the callback
556 <asyncio-pass-keywords>`.
557
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500558 This method is a :ref:`coroutine <coroutine>`.
559
Victor Stinnerea3183f2013-12-03 01:08:00 +0100560.. method:: BaseEventLoop.set_default_executor(executor)
561
562 Set the default executor used by :meth:`run_in_executor`.
563
564
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500565Error Handling API
566------------------
567
568Allows to customize how exceptions are handled in the event loop.
569
570.. method:: BaseEventLoop.set_exception_handler(handler)
571
572 Set *handler* as the new event loop exception handler.
573
574 If *handler* is ``None``, the default exception handler will
575 be set.
576
577 If *handler* is a callable object, it should have a
578 matching signature to ``(loop, context)``, where ``loop``
579 will be a reference to the active event loop, ``context``
580 will be a ``dict`` object (see :meth:`call_exception_handler`
581 documentation for details about context).
582
583.. method:: BaseEventLoop.default_exception_handler(context)
584
585 Default exception handler.
586
587 This is called when an exception occurs and no exception
588 handler is set, and can be called by a custom exception
589 handler that wants to defer to the default behavior.
590
591 *context* parameter has the same meaning as in
592 :meth:`call_exception_handler`.
593
594.. method:: BaseEventLoop.call_exception_handler(context)
595
596 Call the current event loop exception handler.
597
598 *context* is a ``dict`` object containing the following keys
599 (new keys may be introduced later):
600
601 * 'message': Error message;
602 * 'exception' (optional): Exception object;
603 * 'future' (optional): :class:`asyncio.Future` instance;
604 * 'handle' (optional): :class:`asyncio.Handle` instance;
605 * 'protocol' (optional): :ref:`Protocol <asyncio-protocol>` instance;
606 * 'transport' (optional): :ref:`Transport <asyncio-transport>` instance;
607 * 'socket' (optional): :class:`socket.socket` instance.
608
609 .. note::
610
611 Note: this method should not be overloaded in subclassed
612 event loops. For any custom exception handling, use
613 :meth:`set_exception_handler()` method.
614
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100615Debug mode
616----------
617
618.. method:: BaseEventLoop.get_debug()
619
Victor Stinner7b7120e2014-06-23 00:12:14 +0200620 Get the debug mode (:class:`bool`) of the event loop.
621
622 The default value is ``True`` if the environment variable
623 :envvar:`PYTHONASYNCIODEBUG` is set to a non-empty string, ``False``
624 otherwise.
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100625
Victor Stinner64d750b2014-06-18 03:25:23 +0200626 .. versionadded:: 3.4.2
627
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100628.. method:: BaseEventLoop.set_debug(enabled: bool)
629
630 Set the debug mode of the event loop.
631
Victor Stinner64d750b2014-06-18 03:25:23 +0200632 .. versionadded:: 3.4.2
633
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100634.. seealso::
635
Victor Stinner62511fd2014-06-23 00:36:11 +0200636 The :ref:`debug mode of asyncio <asyncio-debug-mode>`.
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100637
Victor Stinner8c462c52014-01-24 18:11:43 +0100638Server
639------
640
Victor Stinner8ebeb032014-07-11 23:47:40 +0200641.. class:: Server
Victor Stinner8c462c52014-01-24 18:11:43 +0100642
Victor Stinner8ebeb032014-07-11 23:47:40 +0200643 Server listening on sockets.
644
645 Object created by the :meth:`BaseEventLoop.create_server` method and the
R David Murray756f0b12015-01-29 19:53:33 -0500646 :func:`start_server` function. Don't instantiate the class directly.
Victor Stinner8c462c52014-01-24 18:11:43 +0100647
648 .. method:: close()
649
Victor Stinner4bfb14a2014-07-12 03:20:24 +0200650 Stop serving: close listening sockets and set the :attr:`sockets`
651 attribute to ``None``.
652
653 The sockets that represent existing incoming client connections are
654 leaved open.
Victor Stinner8ebeb032014-07-11 23:47:40 +0200655
656 The server is closed asynchonously, use the :meth:`wait_closed` coroutine
657 to wait until the server is closed.
Victor Stinner8c462c52014-01-24 18:11:43 +0100658
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100659 .. coroutinemethod:: wait_closed()
Victor Stinner8c462c52014-01-24 18:11:43 +0100660
Victor Stinner8ebeb032014-07-11 23:47:40 +0200661 Wait until the :meth:`close` method completes.
662
663 This method is a :ref:`coroutine <coroutine>`.
664
665 .. attribute:: sockets
666
667 List of :class:`socket.socket` objects the server is listening to, or
668 ``None`` if the server is closed.
Victor Stinner8c462c52014-01-24 18:11:43 +0100669
670
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500671Handle
672------
673
674.. class:: Handle
675
676 A callback wrapper object returned by :func:`BaseEventLoop.call_soon`,
677 :func:`BaseEventLoop.call_soon_threadsafe`, :func:`BaseEventLoop.call_later`,
678 and :func:`BaseEventLoop.call_at`.
679
680 .. method:: cancel()
681
Victor Stinneraea82292014-07-08 23:42:38 +0200682 Cancel the call.
683
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500684
Victor Stinner6888b962014-10-11 16:15:58 +0200685Event loop examples
Victor Stinnera092a612015-01-09 15:58:41 +0100686-------------------
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500687
Victor Stinner3e09e322013-12-03 01:22:06 +0100688.. _asyncio-hello-world-callback:
Victor Stinnerea3183f2013-12-03 01:08:00 +0100689
Victor Stinner7f314ed2014-10-15 18:49:16 +0200690Hello World with call_soon()
Victor Stinnera092a612015-01-09 15:58:41 +0100691^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Victor Stinnerea3183f2013-12-03 01:08:00 +0100692
Victor Stinner7f314ed2014-10-15 18:49:16 +0200693Example using the :meth:`BaseEventLoop.call_soon` method to schedule a
694callback. The callback displays ``"Hello World"`` and then stops the event
695loop::
Victor Stinnerea3183f2013-12-03 01:08:00 +0100696
697 import asyncio
698
Victor Stinner7f314ed2014-10-15 18:49:16 +0200699 def hello_world(loop):
Victor Stinnerea3183f2013-12-03 01:08:00 +0100700 print('Hello World')
Victor Stinner7f314ed2014-10-15 18:49:16 +0200701 loop.stop()
Victor Stinnerea3183f2013-12-03 01:08:00 +0100702
703 loop = asyncio.get_event_loop()
Victor Stinner7f314ed2014-10-15 18:49:16 +0200704
705 # Schedule a call to hello_world()
706 loop.call_soon(hello_world, loop)
707
708 # Blocking call interrupted by loop.stop()
709 loop.run_forever()
710 loop.close()
Victor Stinnerea3183f2013-12-03 01:08:00 +0100711
Victor Stinner3e09e322013-12-03 01:22:06 +0100712.. seealso::
Victor Stinnerea3183f2013-12-03 01:08:00 +0100713
Victor Stinner6888b962014-10-11 16:15:58 +0200714 The :ref:`Hello World coroutine <asyncio-hello-world-coroutine>` example
715 uses a :ref:`coroutine <coroutine>`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100716
Victor Stinner8b863482014-01-27 10:07:50 +0100717
Victor Stinner7f314ed2014-10-15 18:49:16 +0200718.. _asyncio-date-callback:
719
720Display the current date with call_later()
Victor Stinnera092a612015-01-09 15:58:41 +0100721^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Victor Stinner7f314ed2014-10-15 18:49:16 +0200722
723Example of callback displaying the current date every second. The callback uses
724the :meth:`BaseEventLoop.call_later` method to reschedule itself during 5
725seconds, and then stops the event loop::
726
727 import asyncio
728 import datetime
729
730 def display_date(end_time, loop):
731 print(datetime.datetime.now())
732 if (loop.time() + 1.0) < end_time:
733 loop.call_later(1, display_date, end_time, loop)
734 else:
735 loop.stop()
736
737 loop = asyncio.get_event_loop()
738
739 # Schedule the first call to display_date()
740 end_time = loop.time() + 5.0
741 loop.call_soon(display_date, end_time, loop)
742
743 # Blocking call interrupted by loop.stop()
744 loop.run_forever()
745 loop.close()
746
747.. seealso::
748
749 The :ref:`coroutine displaying the current date
750 <asyncio-date-coroutine>` example uses a :ref:`coroutine
751 <coroutine>`.
752
753
Victor Stinner04e6df32014-10-11 16:16:27 +0200754.. _asyncio-watch-read-event:
Victor Stinner8b863482014-01-27 10:07:50 +0100755
Victor Stinner04e6df32014-10-11 16:16:27 +0200756Watch a file descriptor for read events
Victor Stinnera092a612015-01-09 15:58:41 +0100757^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Victor Stinner04e6df32014-10-11 16:16:27 +0200758
759Wait until a file descriptor received some data using the
760:meth:`BaseEventLoop.add_reader` method and then close the event loop::
761
762 import asyncio
Victor Stinnerccd8e342014-10-11 16:30:02 +0200763 try:
764 from socket import socketpair
765 except ImportError:
766 from asyncio.windows_utils import socketpair
Victor Stinner04e6df32014-10-11 16:16:27 +0200767
768 # Create a pair of connected file descriptors
Victor Stinnerccd8e342014-10-11 16:30:02 +0200769 rsock, wsock = socketpair()
Victor Stinner04e6df32014-10-11 16:16:27 +0200770 loop = asyncio.get_event_loop()
771
772 def reader():
773 data = rsock.recv(100)
774 print("Received:", data.decode())
Victor Stinner2cef3002014-10-23 22:38:46 +0200775 # We are done: unregister the file descriptor
Victor Stinner04e6df32014-10-11 16:16:27 +0200776 loop.remove_reader(rsock)
777 # Stop the event loop
778 loop.stop()
779
Victor Stinner2cef3002014-10-23 22:38:46 +0200780 # Register the file descriptor for read event
Victor Stinner04e6df32014-10-11 16:16:27 +0200781 loop.add_reader(rsock, reader)
782
783 # Simulate the reception of data from the network
784 loop.call_soon(wsock.send, 'abc'.encode())
785
786 # Run the event loop
787 loop.run_forever()
788
789 # We are done, close sockets and the event loop
790 rsock.close()
791 wsock.close()
792 loop.close()
793
794.. seealso::
795
796 The :ref:`register an open socket to wait for data using a protocol
797 <asyncio-register-socket>` example uses a low-level protocol created by the
798 :meth:`BaseEventLoop.create_connection` method.
799
800 The :ref:`register an open socket to wait for data using streams
801 <asyncio-register-socket-streams>` example uses high-level streams
802 created by the :func:`open_connection` function in a coroutine.
803
804
805Set signal handlers for SIGINT and SIGTERM
Victor Stinnera092a612015-01-09 15:58:41 +0100806^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Victor Stinner04e6df32014-10-11 16:16:27 +0200807
808Register handlers for signals :py:data:`SIGINT` and :py:data:`SIGTERM` using
809the :meth:`BaseEventLoop.add_signal_handler` method::
Victor Stinner8b863482014-01-27 10:07:50 +0100810
811 import asyncio
812 import functools
813 import os
814 import signal
815
816 def ask_exit(signame):
817 print("got signal %s: exit" % signame)
818 loop.stop()
819
820 loop = asyncio.get_event_loop()
821 for signame in ('SIGINT', 'SIGTERM'):
822 loop.add_signal_handler(getattr(signal, signame),
823 functools.partial(ask_exit, signame))
824
825 print("Event loop running forever, press CTRL+c to interrupt.")
826 print("pid %s: send SIGINT or SIGTERM to exit." % os.getpid())
Victor Stinner63b21a82014-07-05 15:38:59 +0200827 try:
828 loop.run_forever()
829 finally:
830 loop.close()
Victor Stinner2cef3002014-10-23 22:38:46 +0200831
832This example only works on UNIX.