blob: c5a338558ab0911339915248599aa18b4ffa0d40 [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
Victor Stinner83704962015-02-25 14:24:15 +010025 This class is :ref:`not thread safe <asyncio-multithreading>`.
26
Victor Stinnerea3183f2013-12-03 01:08:00 +010027Run an event loop
28-----------------
29
30.. method:: BaseEventLoop.run_forever()
31
32 Run until :meth:`stop` is called.
33
34.. method:: BaseEventLoop.run_until_complete(future)
35
Victor Stinner99c2ab42013-12-03 19:17:25 +010036 Run until the :class:`Future` is done.
Victor Stinnerea3183f2013-12-03 01:08:00 +010037
Victor Stinner530ef2f2014-07-08 12:39:10 +020038 If the argument is a :ref:`coroutine object <coroutine>`, it is wrapped by
39 :func:`async`.
Victor Stinnerea3183f2013-12-03 01:08:00 +010040
41 Return the Future's result, or raise its exception.
42
43.. method:: BaseEventLoop.is_running()
44
45 Returns running status of event loop.
46
Victor Stinnerafbf8272013-12-03 02:05:42 +010047.. method:: BaseEventLoop.stop()
Victor Stinnerea3183f2013-12-03 01:08:00 +010048
49 Stop running the event loop.
50
51 Every callback scheduled before :meth:`stop` is called will run.
Andrew Svetlovca4f3432014-07-24 11:36:33 +030052 Callbacks scheduled after :meth:`stop` is called will not run.
53 However, those callbacks will run if :meth:`run_forever` is called
54 again later.
Victor Stinnerea3183f2013-12-03 01:08:00 +010055
Victor Stinnerbb2fc5b2014-06-10 10:23:10 +020056.. method:: BaseEventLoop.is_closed()
57
58 Returns ``True`` if the event loop was closed.
59
60 .. versionadded:: 3.4.2
61
Victor Stinnerea3183f2013-12-03 01:08:00 +010062.. method:: BaseEventLoop.close()
63
Terry Jan Reedy9ff41802014-07-24 02:59:02 -040064 Close the event loop. The loop must not be running.
Victor Stinnerea3183f2013-12-03 01:08:00 +010065
66 This clears the queues and shuts down the executor, but does not wait for
67 the executor to finish.
68
69 This is idempotent and irreversible. No other methods should be called after
70 this one.
71
Victor Stinner8464c242014-11-28 13:15:41 +010072.. _asyncio-pass-keywords:
Victor Stinnerea3183f2013-12-03 01:08:00 +010073
74Calls
75-----
76
Victor Stinner8464c242014-11-28 13:15:41 +010077Most :mod:`asyncio` functions don't accept keywords. If you want to pass
78keywords to your callback, use :func:`functools.partial`. For example,
79``loop.call_soon(functools.partial(print, "Hello", flush=True))`` will call
80``print("Hello", flush=True)``.
81
82.. note::
83 :func:`functools.partial` is better than ``lambda`` functions, because
84 :mod:`asyncio` can inspect :func:`functools.partial` object to display
85 parameters in debug mode, whereas ``lambda`` functions have a poor
86 representation.
87
Victor Stinnerea3183f2013-12-03 01:08:00 +010088.. method:: BaseEventLoop.call_soon(callback, \*args)
89
Victor Stinner4d5115c2014-12-15 17:50:55 +010090 Arrange for a callback to be called as soon as possible. The callback is
91 called after :meth:`call_soon` returns, when control returns to the event
92 loop.
Victor Stinnerea3183f2013-12-03 01:08:00 +010093
94 This operates as a FIFO queue, callbacks are called in the order in
95 which they are registered. Each callback will be called exactly once.
96
97 Any positional arguments after the callback will be passed to the
98 callback when it is called.
99
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500100 An instance of :class:`asyncio.Handle` is returned.
101
Victor Stinner8464c242014-11-28 13:15:41 +0100102 :ref:`Use functools.partial to pass keywords to the callback
103 <asyncio-pass-keywords>`.
104
Victor Stinnerea3183f2013-12-03 01:08:00 +0100105.. method:: BaseEventLoop.call_soon_threadsafe(callback, \*args)
106
107 Like :meth:`call_soon`, but thread safe.
108
Victor Stinner83704962015-02-25 14:24:15 +0100109 See the :ref:`concurrency and multithreading <asyncio-multithreading>`
110 section of the documentation.
111
Victor Stinnerea3183f2013-12-03 01:08:00 +0100112
Victor Stinner45b27ed2014-02-01 02:36:43 +0100113.. _asyncio-delayed-calls:
114
Victor Stinnerea3183f2013-12-03 01:08:00 +0100115Delayed calls
116-------------
117
118The event loop has its own internal clock for computing timeouts.
119Which clock is used depends on the (platform-specific) event loop
120implementation; ideally it is a monotonic clock. This will generally be
121a different clock than :func:`time.time`.
122
Victor Stinnerfd9d3742014-02-18 09:37:43 +0100123.. note::
124
125 Timeouts (relative *delay* or absolute *when*) should not exceed one day.
126
Victor Stinner45b27ed2014-02-01 02:36:43 +0100127
Victor Stinnerea3183f2013-12-03 01:08:00 +0100128.. method:: BaseEventLoop.call_later(delay, callback, *args)
129
130 Arrange for the *callback* to be called after the given *delay*
131 seconds (either an int or float).
132
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500133 An instance of :class:`asyncio.Handle` is returned.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100134
135 *callback* will be called exactly once per call to :meth:`call_later`.
136 If two callbacks are scheduled for exactly the same time, it is
137 undefined which will be called first.
138
139 The optional positional *args* will be passed to the callback when it
140 is called. If you want the callback to be called with some named
141 arguments, use a closure or :func:`functools.partial`.
142
Victor Stinner8464c242014-11-28 13:15:41 +0100143 :ref:`Use functools.partial to pass keywords to the callback
144 <asyncio-pass-keywords>`.
145
Victor Stinnerea3183f2013-12-03 01:08:00 +0100146.. method:: BaseEventLoop.call_at(when, callback, *args)
147
148 Arrange for the *callback* to be called at the given absolute timestamp
Berker Peksagb5563992014-11-07 19:51:07 +0200149 *when* (an int or float), using the same time reference as
150 :meth:`BaseEventLoop.time`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100151
152 This method's behavior is the same as :meth:`call_later`.
153
Victor Stinner8464c242014-11-28 13:15:41 +0100154 :ref:`Use functools.partial to pass keywords to the callback
155 <asyncio-pass-keywords>`.
156
Victor Stinnerea3183f2013-12-03 01:08:00 +0100157.. method:: BaseEventLoop.time()
158
159 Return the current time, as a :class:`float` value, according to the
160 event loop's internal clock.
161
Victor Stinner3e09e322013-12-03 01:22:06 +0100162.. seealso::
163
164 The :func:`asyncio.sleep` function.
165
Victor Stinnerea3183f2013-12-03 01:08:00 +0100166
Yury Selivanovbb961342015-06-25 11:54:34 -0400167Tasks
168-----
Victor Stinner530ef2f2014-07-08 12:39:10 +0200169
170.. method:: BaseEventLoop.create_task(coro)
171
172 Schedule the execution of a :ref:`coroutine object <coroutine>`: wrap it in
173 a future. Return a :class:`Task` object.
174
175 Third-party event loops can use their own subclass of :class:`Task` for
176 interoperability. In this case, the result type is a subclass of
177 :class:`Task`.
178
Victor Stinner337e03f2014-08-11 01:11:13 +0200179 This method was added in Python 3.4.2. Use the :func:`async` function to
180 support also older Python versions.
Victor Stinner530ef2f2014-07-08 12:39:10 +0200181
182 .. versionadded:: 3.4.2
183
Yury Selivanov71854612015-05-11 16:28:27 -0400184.. method:: BaseEventLoop.set_task_factory(factory)
185
186 Set a task factory that will be used by
187 :meth:`BaseEventLoop.create_task`.
188
189 If *factory* is ``None`` the default task factory will be set.
190
191 If *factory* is a *callable*, it should have a signature matching
192 ``(loop, coro)``, where *loop* will be a reference to the active
193 event loop, *coro* will be a coroutine object. The callable
194 must return an :class:`asyncio.Future` compatible object.
195
196 .. versionadded:: 3.4.4
197
198.. method:: BaseEventLoop.get_task_factory()
199
200 Return a task factory, or ``None`` if the default one is in use.
201
202 .. versionadded:: 3.4.4
203
Victor Stinner530ef2f2014-07-08 12:39:10 +0200204
Victor Stinnerea3183f2013-12-03 01:08:00 +0100205Creating connections
Victor Stinner0c6f1ca2013-12-03 01:46:39 +0100206--------------------
Victor Stinnerea3183f2013-12-03 01:08:00 +0100207
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100208.. 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 +0100209
210 Create a streaming transport connection to a given Internet *host* and
Victor Stinnera6919aa2014-02-19 13:32:34 +0100211 *port*: socket family :py:data:`~socket.AF_INET` or
212 :py:data:`~socket.AF_INET6` depending on *host* (or *family* if specified),
213 socket type :py:data:`~socket.SOCK_STREAM`. *protocol_factory* must be a
214 callable returning a :ref:`protocol <asyncio-protocol>` instance.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100215
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500216 This method is a :ref:`coroutine <coroutine>` which will try to
Victor Stinnerea3183f2013-12-03 01:08:00 +0100217 establish the connection in the background. When successful, the
218 coroutine returns a ``(transport, protocol)`` pair.
219
220 The chronological synopsis of the underlying operation is as follows:
221
Victor Stinner9592edb2014-02-02 15:03:02 +0100222 #. The connection is established, and a :ref:`transport <asyncio-transport>`
Victor Stinnerea3183f2013-12-03 01:08:00 +0100223 is created to represent it.
224
225 #. *protocol_factory* is called without arguments and must return a
Victor Stinner9592edb2014-02-02 15:03:02 +0100226 :ref:`protocol <asyncio-protocol>` instance.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100227
228 #. The protocol instance is tied to the transport, and its
229 :meth:`connection_made` method is called.
230
231 #. The coroutine returns successfully with the ``(transport, protocol)``
232 pair.
233
234 The created transport is an implementation-dependent bidirectional stream.
235
236 .. note::
237 *protocol_factory* can be any kind of callable, not necessarily
238 a class. For example, if you want to use a pre-created
239 protocol instance, you can pass ``lambda: my_protocol``.
240
241 Options allowing to change how the connection is created:
242
243 * *ssl*: if given and not false, a SSL/TLS transport is created
244 (by default a plain TCP transport is created). If *ssl* is
245 a :class:`ssl.SSLContext` object, this context is used to create
246 the transport; if *ssl* is :const:`True`, a context with some
247 unspecified default settings is used.
248
Berker Peksag9c1dba22014-09-28 00:00:58 +0300249 .. seealso:: :ref:`SSL/TLS security considerations <ssl-security>`
Antoine Pitrouc5e075f2014-03-22 18:19:11 +0100250
Victor Stinnerea3183f2013-12-03 01:08:00 +0100251 * *server_hostname*, is only for use together with *ssl*,
252 and sets or overrides the hostname that the target server's certificate
253 will be matched against. By default the value of the *host* argument
254 is used. If *host* is empty, there is no default and you must pass a
255 value for *server_hostname*. If *server_hostname* is an empty
256 string, hostname matching is disabled (which is a serious security
257 risk, allowing for man-in-the-middle-attacks).
258
259 * *family*, *proto*, *flags* are the optional address family, protocol
260 and flags to be passed through to getaddrinfo() for *host* resolution.
261 If given, these should all be integers from the corresponding
262 :mod:`socket` module constants.
263
264 * *sock*, if given, should be an existing, already connected
265 :class:`socket.socket` object to be used by the transport.
266 If *sock* is given, none of *host*, *port*, *family*, *proto*, *flags*
267 and *local_addr* should be specified.
268
269 * *local_addr*, if given, is a ``(local_host, local_port)`` tuple used
270 to bind the socket to locally. The *local_host* and *local_port*
271 are looked up using getaddrinfo(), similarly to *host* and *port*.
272
Victor Stinner41f3c3f2014-08-31 14:47:37 +0200273 On Windows with :class:`ProactorEventLoop`, SSL/TLS is not supported.
274
Victor Stinnerc8ea8132014-01-23 11:02:09 +0100275 .. seealso::
276
277 The :func:`open_connection` function can be used to get a pair of
278 (:class:`StreamReader`, :class:`StreamWriter`) instead of a protocol.
279
Victor Stinnerea3183f2013-12-03 01:08:00 +0100280
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100281.. 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 +0100282
283 Create datagram connection: socket family :py:data:`~socket.AF_INET` or
284 :py:data:`~socket.AF_INET6` depending on *host* (or *family* if specified),
285 socket type :py:data:`~socket.SOCK_DGRAM`.
286
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500287 This method is a :ref:`coroutine <coroutine>` which will try to
Victor Stinnera6919aa2014-02-19 13:32:34 +0100288 establish the connection in the background. When successful, the
289 coroutine returns a ``(transport, protocol)`` pair.
290
291 See the :meth:`BaseEventLoop.create_connection` method for parameters.
292
Victor Stinner41f3c3f2014-08-31 14:47:37 +0200293 On Windows with :class:`ProactorEventLoop`, this method is not supported.
294
Victor Stinnerc7edffd2014-10-12 11:24:26 +0200295 See :ref:`UDP echo client protocol <asyncio-udp-echo-client-protocol>` and
296 :ref:`UDP echo server protocol <asyncio-udp-echo-server-protocol>` examples.
297
Victor Stinnera6919aa2014-02-19 13:32:34 +0100298
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100299.. coroutinemethod:: BaseEventLoop.create_unix_connection(protocol_factory, path, \*, ssl=None, sock=None, server_hostname=None)
Victor Stinnera6919aa2014-02-19 13:32:34 +0100300
301 Create UNIX connection: socket family :py:data:`~socket.AF_UNIX`, socket
302 type :py:data:`~socket.SOCK_STREAM`. The :py:data:`~socket.AF_UNIX` socket
303 family is used to communicate between processes on the same machine
304 efficiently.
305
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500306 This method is a :ref:`coroutine <coroutine>` which will try to
Victor Stinnera6919aa2014-02-19 13:32:34 +0100307 establish the connection in the background. When successful, the
308 coroutine returns a ``(transport, protocol)`` pair.
309
310 See the :meth:`BaseEventLoop.create_connection` method for parameters.
311
312 Availability: UNIX.
313
314
Victor Stinnerea3183f2013-12-03 01:08:00 +0100315Creating listening connections
316------------------------------
317
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100318.. 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 +0100319
Victor Stinner33f6abe2014-10-12 20:36:04 +0200320 Create a TCP server (socket type :data:`~socket.SOCK_STREAM`) bound to
321 *host* and *port*.
322
323 Return a :class:`Server` object, its :attr:`~Server.sockets` attribute
324 contains created sockets. Use the :meth:`Server.close` method to stop the
325 server: close listening sockets.
326
327 Parameters:
328
329 * If *host* is an empty string or ``None``, all interfaces are assumed
330 and a list of multiple sockets will be returned (most likely
331 one for IPv4 and another one for IPv6).
332
333 * *family* can be set to either :data:`socket.AF_INET` or
334 :data:`~socket.AF_INET6` to force the socket to use IPv4 or IPv6. If not set
335 it will be determined from host (defaults to :data:`socket.AF_UNSPEC`).
336
337 * *flags* is a bitmask for :meth:`getaddrinfo`.
338
339 * *sock* can optionally be specified in order to use a preexisting
340 socket object. If specified, *host* and *port* should be omitted (must be
341 :const:`None`).
342
343 * *backlog* is the maximum number of queued connections passed to
344 :meth:`~socket.socket.listen` (defaults to 100).
345
346 * *ssl* can be set to an :class:`~ssl.SSLContext` to enable SSL over the
347 accepted connections.
348
349 * *reuse_address* tells the kernel to reuse a local socket in
350 TIME_WAIT state, without waiting for its natural timeout to
351 expire. If not specified will automatically be set to True on
352 UNIX.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100353
Victor Stinnerd1432092014-06-19 17:11:49 +0200354 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100355
Victor Stinner41f3c3f2014-08-31 14:47:37 +0200356 On Windows with :class:`ProactorEventLoop`, SSL/TLS is not supported.
357
Victor Stinnerc8ea8132014-01-23 11:02:09 +0100358 .. seealso::
359
360 The function :func:`start_server` creates a (:class:`StreamReader`,
361 :class:`StreamWriter`) pair and calls back a function with this pair.
362
Victor Stinnerea3183f2013-12-03 01:08:00 +0100363
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100364.. coroutinemethod:: BaseEventLoop.create_unix_server(protocol_factory, path=None, \*, sock=None, backlog=100, ssl=None)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100365
Victor Stinnera6919aa2014-02-19 13:32:34 +0100366 Similar to :meth:`BaseEventLoop.create_server`, but specific to the
367 socket family :py:data:`~socket.AF_UNIX`.
368
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100369 This method is a :ref:`coroutine <coroutine>`.
370
Victor Stinnera6919aa2014-02-19 13:32:34 +0100371 Availability: UNIX.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100372
373
Victor Stinnerc1567df2014-02-08 23:22:58 +0100374Watch file descriptors
375----------------------
376
Victor Stinner41f3c3f2014-08-31 14:47:37 +0200377On Windows with :class:`SelectorEventLoop`, only socket handles are supported
378(ex: pipe file descriptors are not supported).
379
380On Windows with :class:`ProactorEventLoop`, these methods are not supported.
381
Victor Stinnerc1567df2014-02-08 23:22:58 +0100382.. method:: BaseEventLoop.add_reader(fd, callback, \*args)
383
384 Start watching the file descriptor for read availability and then call the
385 *callback* with specified arguments.
386
Victor Stinner8464c242014-11-28 13:15:41 +0100387 :ref:`Use functools.partial to pass keywords to the callback
388 <asyncio-pass-keywords>`.
389
Victor Stinnerc1567df2014-02-08 23:22:58 +0100390.. method:: BaseEventLoop.remove_reader(fd)
391
392 Stop watching the file descriptor for read availability.
393
394.. method:: BaseEventLoop.add_writer(fd, callback, \*args)
395
396 Start watching the file descriptor for write availability and then call the
397 *callback* with specified arguments.
398
Victor Stinner8464c242014-11-28 13:15:41 +0100399 :ref:`Use functools.partial to pass keywords to the callback
400 <asyncio-pass-keywords>`.
401
Victor Stinnerc1567df2014-02-08 23:22:58 +0100402.. method:: BaseEventLoop.remove_writer(fd)
403
404 Stop watching the file descriptor for write availability.
405
Victor Stinner04e6df32014-10-11 16:16:27 +0200406The :ref:`watch a file descriptor for read events <asyncio-watch-read-event>`
407example uses the low-level :meth:`BaseEventLoop.add_reader` method to register
408the file descriptor of a socket.
409
Victor Stinnerc1567df2014-02-08 23:22:58 +0100410
411Low-level socket operations
412---------------------------
413
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100414.. coroutinemethod:: BaseEventLoop.sock_recv(sock, nbytes)
Victor Stinnerc1567df2014-02-08 23:22:58 +0100415
416 Receive data from the socket. The return value is a bytes object
417 representing the data received. The maximum amount of data to be received
418 at once is specified by *nbytes*.
419
Victor Stinnerd84fd732014-08-26 01:01:59 +0200420 With :class:`SelectorEventLoop` event loop, the socket *sock* must be
421 non-blocking.
Victor Stinnerec2ce092014-07-29 23:12:22 +0200422
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500423 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100424
425 .. seealso::
426
427 The :meth:`socket.socket.recv` method.
428
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100429.. coroutinemethod:: BaseEventLoop.sock_sendall(sock, data)
Victor Stinnerc1567df2014-02-08 23:22:58 +0100430
431 Send data to the socket. The socket must be connected to a remote socket.
432 This method continues to send data from *data* until either all data has
433 been sent or an error occurs. ``None`` is returned on success. On error,
434 an exception is raised, and there is no way to determine how much data, if
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500435 any, was successfully processed by the receiving end of the connection.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100436
Victor Stinnerd84fd732014-08-26 01:01:59 +0200437 With :class:`SelectorEventLoop` event loop, the socket *sock* must be
438 non-blocking.
Victor Stinnerec2ce092014-07-29 23:12:22 +0200439
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500440 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100441
442 .. seealso::
443
444 The :meth:`socket.socket.sendall` method.
445
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100446.. coroutinemethod:: BaseEventLoop.sock_connect(sock, address)
Victor Stinnerc1567df2014-02-08 23:22:58 +0100447
448 Connect to a remote socket at *address*.
449
Victor Stinner1b0580b2014-02-13 09:24:37 +0100450 The *address* must be already resolved to avoid the trap of hanging the
451 entire event loop when the address requires doing a DNS lookup. For
452 example, it must be an IP address, not an hostname, for
453 :py:data:`~socket.AF_INET` and :py:data:`~socket.AF_INET6` address families.
454 Use :meth:`getaddrinfo` to resolve the hostname asynchronously.
455
Victor Stinnerd84fd732014-08-26 01:01:59 +0200456 With :class:`SelectorEventLoop` event loop, the socket *sock* must be
457 non-blocking.
Victor Stinnerec2ce092014-07-29 23:12:22 +0200458
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500459 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100460
461 .. seealso::
462
463 The :meth:`BaseEventLoop.create_connection` method, the
464 :func:`open_connection` function and the :meth:`socket.socket.connect`
465 method.
466
467
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100468.. coroutinemethod:: BaseEventLoop.sock_accept(sock)
Victor Stinnerc1567df2014-02-08 23:22:58 +0100469
470 Accept a connection. The socket must be bound to an address and listening
471 for connections. The return value is a pair ``(conn, address)`` where *conn*
472 is a *new* socket object usable to send and receive data on the connection,
473 and *address* is the address bound to the socket on the other end of the
474 connection.
475
Victor Stinnerec2ce092014-07-29 23:12:22 +0200476 The socket *sock* must be non-blocking.
477
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500478 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100479
480 .. seealso::
481
482 The :meth:`BaseEventLoop.create_server` method, the :func:`start_server`
483 function and the :meth:`socket.socket.accept` method.
484
485
486Resolve host name
487-----------------
Victor Stinnerea3183f2013-12-03 01:08:00 +0100488
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100489.. coroutinemethod:: BaseEventLoop.getaddrinfo(host, port, \*, family=0, type=0, proto=0, flags=0)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100490
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500491 This method is a :ref:`coroutine <coroutine>`, similar to
492 :meth:`socket.getaddrinfo` function but non-blocking.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100493
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100494.. coroutinemethod:: BaseEventLoop.getnameinfo(sockaddr, flags=0)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100495
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500496 This method is a :ref:`coroutine <coroutine>`, similar to
497 :meth:`socket.getnameinfo` function but non-blocking.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100498
499
Victor Stinner984600f2014-03-25 09:40:26 +0100500Connect pipes
501-------------
Victor Stinnerea3183f2013-12-03 01:08:00 +0100502
Victor Stinner41f3c3f2014-08-31 14:47:37 +0200503On Windows with :class:`SelectorEventLoop`, these methods are not supported.
504Use :class:`ProactorEventLoop` to support pipes on Windows.
505
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100506.. coroutinemethod:: BaseEventLoop.connect_read_pipe(protocol_factory, pipe)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100507
Victor Stinnerd84fd732014-08-26 01:01:59 +0200508 Register read pipe in eventloop.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100509
510 *protocol_factory* should instantiate object with :class:`Protocol`
Victor Stinnera5b257a2014-05-29 00:14:03 +0200511 interface. *pipe* is a :term:`file-like object <file object>`.
512 Return pair ``(transport, protocol)``, where *transport* supports the
Victor Stinnerea3183f2013-12-03 01:08:00 +0100513 :class:`ReadTransport` interface.
514
Victor Stinnerd84fd732014-08-26 01:01:59 +0200515 With :class:`SelectorEventLoop` event loop, the *pipe* is set to
516 non-blocking mode.
517
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500518 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100519
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100520.. coroutinemethod:: BaseEventLoop.connect_write_pipe(protocol_factory, pipe)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100521
522 Register write pipe in eventloop.
523
524 *protocol_factory* should instantiate object with :class:`BaseProtocol`
Victor Stinner2cef3002014-10-23 22:38:46 +0200525 interface. *pipe* is :term:`file-like object <file object>`.
526 Return pair ``(transport, protocol)``, where *transport* supports
Victor Stinnerea3183f2013-12-03 01:08:00 +0100527 :class:`WriteTransport` interface.
528
Victor Stinnerd84fd732014-08-26 01:01:59 +0200529 With :class:`SelectorEventLoop` event loop, the *pipe* is set to
530 non-blocking mode.
531
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500532 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100533
Victor Stinner08444382014-02-02 22:43:39 +0100534.. seealso::
535
Victor Stinner984600f2014-03-25 09:40:26 +0100536 The :meth:`BaseEventLoop.subprocess_exec` and
537 :meth:`BaseEventLoop.subprocess_shell` methods.
Victor Stinner08444382014-02-02 22:43:39 +0100538
Victor Stinnerea3183f2013-12-03 01:08:00 +0100539
Victor Stinner8b863482014-01-27 10:07:50 +0100540UNIX signals
541------------
542
543Availability: UNIX only.
544
545.. method:: BaseEventLoop.add_signal_handler(signum, callback, \*args)
546
547 Add a handler for a signal.
548
549 Raise :exc:`ValueError` if the signal number is invalid or uncatchable.
550 Raise :exc:`RuntimeError` if there is a problem setting up the handler.
551
Victor Stinner8464c242014-11-28 13:15:41 +0100552 :ref:`Use functools.partial to pass keywords to the callback
553 <asyncio-pass-keywords>`.
554
Victor Stinner8b863482014-01-27 10:07:50 +0100555.. method:: BaseEventLoop.remove_signal_handler(sig)
556
557 Remove a handler for a signal.
558
559 Return ``True`` if a signal handler was removed, ``False`` if not.
560
561.. seealso::
562
563 The :mod:`signal` module.
564
565
Victor Stinnerea3183f2013-12-03 01:08:00 +0100566Executor
567--------
568
569Call a function in an :class:`~concurrent.futures.Executor` (pool of threads or
570pool of processes). By default, an event loop uses a thread pool executor
571(:class:`~concurrent.futures.ThreadPoolExecutor`).
572
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100573.. coroutinemethod:: BaseEventLoop.run_in_executor(executor, callback, \*args)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100574
575 Arrange for a callback to be called in the specified executor.
576
Larry Hastings3732ed22014-03-15 21:13:56 -0700577 The *executor* argument should be an :class:`~concurrent.futures.Executor`
578 instance. The default executor is used if *executor* is ``None``.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100579
Victor Stinner8464c242014-11-28 13:15:41 +0100580 :ref:`Use functools.partial to pass keywords to the callback
581 <asyncio-pass-keywords>`.
582
Yury Selivanov37f15bc2014-02-20 16:20:44 -0500583 This method is a :ref:`coroutine <coroutine>`.
584
Victor Stinnerea3183f2013-12-03 01:08:00 +0100585.. method:: BaseEventLoop.set_default_executor(executor)
586
587 Set the default executor used by :meth:`run_in_executor`.
588
589
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500590Error Handling API
591------------------
592
593Allows to customize how exceptions are handled in the event loop.
594
595.. method:: BaseEventLoop.set_exception_handler(handler)
596
597 Set *handler* as the new event loop exception handler.
598
599 If *handler* is ``None``, the default exception handler will
600 be set.
601
602 If *handler* is a callable object, it should have a
603 matching signature to ``(loop, context)``, where ``loop``
604 will be a reference to the active event loop, ``context``
605 will be a ``dict`` object (see :meth:`call_exception_handler`
606 documentation for details about context).
607
608.. method:: BaseEventLoop.default_exception_handler(context)
609
610 Default exception handler.
611
612 This is called when an exception occurs and no exception
613 handler is set, and can be called by a custom exception
614 handler that wants to defer to the default behavior.
615
616 *context* parameter has the same meaning as in
617 :meth:`call_exception_handler`.
618
619.. method:: BaseEventLoop.call_exception_handler(context)
620
621 Call the current event loop exception handler.
622
623 *context* is a ``dict`` object containing the following keys
624 (new keys may be introduced later):
625
626 * 'message': Error message;
627 * 'exception' (optional): Exception object;
628 * 'future' (optional): :class:`asyncio.Future` instance;
629 * 'handle' (optional): :class:`asyncio.Handle` instance;
630 * 'protocol' (optional): :ref:`Protocol <asyncio-protocol>` instance;
631 * 'transport' (optional): :ref:`Transport <asyncio-transport>` instance;
632 * 'socket' (optional): :class:`socket.socket` instance.
633
634 .. note::
635
636 Note: this method should not be overloaded in subclassed
637 event loops. For any custom exception handling, use
638 :meth:`set_exception_handler()` method.
639
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100640Debug mode
641----------
642
643.. method:: BaseEventLoop.get_debug()
644
Victor Stinner7b7120e2014-06-23 00:12:14 +0200645 Get the debug mode (:class:`bool`) of the event loop.
646
647 The default value is ``True`` if the environment variable
648 :envvar:`PYTHONASYNCIODEBUG` is set to a non-empty string, ``False``
649 otherwise.
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100650
Victor Stinner64d750b2014-06-18 03:25:23 +0200651 .. versionadded:: 3.4.2
652
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100653.. method:: BaseEventLoop.set_debug(enabled: bool)
654
655 Set the debug mode of the event loop.
656
Victor Stinner64d750b2014-06-18 03:25:23 +0200657 .. versionadded:: 3.4.2
658
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100659.. seealso::
660
Victor Stinner62511fd2014-06-23 00:36:11 +0200661 The :ref:`debug mode of asyncio <asyncio-debug-mode>`.
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100662
Victor Stinner8c462c52014-01-24 18:11:43 +0100663Server
664------
665
Victor Stinner8ebeb032014-07-11 23:47:40 +0200666.. class:: Server
Victor Stinner8c462c52014-01-24 18:11:43 +0100667
Victor Stinner8ebeb032014-07-11 23:47:40 +0200668 Server listening on sockets.
669
670 Object created by the :meth:`BaseEventLoop.create_server` method and the
R David Murray756f0b12015-01-29 19:53:33 -0500671 :func:`start_server` function. Don't instantiate the class directly.
Victor Stinner8c462c52014-01-24 18:11:43 +0100672
673 .. method:: close()
674
Victor Stinner4bfb14a2014-07-12 03:20:24 +0200675 Stop serving: close listening sockets and set the :attr:`sockets`
676 attribute to ``None``.
677
678 The sockets that represent existing incoming client connections are
679 leaved open.
Victor Stinner8ebeb032014-07-11 23:47:40 +0200680
681 The server is closed asynchonously, use the :meth:`wait_closed` coroutine
682 to wait until the server is closed.
Victor Stinner8c462c52014-01-24 18:11:43 +0100683
Victor Stinnerbdd574d2015-02-12 22:49:18 +0100684 .. coroutinemethod:: wait_closed()
Victor Stinner8c462c52014-01-24 18:11:43 +0100685
Victor Stinner8ebeb032014-07-11 23:47:40 +0200686 Wait until the :meth:`close` method completes.
687
688 This method is a :ref:`coroutine <coroutine>`.
689
690 .. attribute:: sockets
691
692 List of :class:`socket.socket` objects the server is listening to, or
693 ``None`` if the server is closed.
Victor Stinner8c462c52014-01-24 18:11:43 +0100694
695
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500696Handle
697------
698
699.. class:: Handle
700
701 A callback wrapper object returned by :func:`BaseEventLoop.call_soon`,
702 :func:`BaseEventLoop.call_soon_threadsafe`, :func:`BaseEventLoop.call_later`,
703 and :func:`BaseEventLoop.call_at`.
704
705 .. method:: cancel()
706
Victor Stinneraea82292014-07-08 23:42:38 +0200707 Cancel the call.
708
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500709
Victor Stinner6888b962014-10-11 16:15:58 +0200710Event loop examples
Victor Stinnera092a612015-01-09 15:58:41 +0100711-------------------
Yury Selivanov43ee1c12014-02-19 20:58:44 -0500712
Victor Stinner3e09e322013-12-03 01:22:06 +0100713.. _asyncio-hello-world-callback:
Victor Stinnerea3183f2013-12-03 01:08:00 +0100714
Victor Stinner7f314ed2014-10-15 18:49:16 +0200715Hello World with call_soon()
Victor Stinnera092a612015-01-09 15:58:41 +0100716^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Victor Stinnerea3183f2013-12-03 01:08:00 +0100717
Victor Stinner7f314ed2014-10-15 18:49:16 +0200718Example using the :meth:`BaseEventLoop.call_soon` method to schedule a
719callback. The callback displays ``"Hello World"`` and then stops the event
720loop::
Victor Stinnerea3183f2013-12-03 01:08:00 +0100721
722 import asyncio
723
Victor Stinner7f314ed2014-10-15 18:49:16 +0200724 def hello_world(loop):
Victor Stinnerea3183f2013-12-03 01:08:00 +0100725 print('Hello World')
Victor Stinner7f314ed2014-10-15 18:49:16 +0200726 loop.stop()
Victor Stinnerea3183f2013-12-03 01:08:00 +0100727
728 loop = asyncio.get_event_loop()
Victor Stinner7f314ed2014-10-15 18:49:16 +0200729
730 # Schedule a call to hello_world()
731 loop.call_soon(hello_world, loop)
732
733 # Blocking call interrupted by loop.stop()
734 loop.run_forever()
735 loop.close()
Victor Stinnerea3183f2013-12-03 01:08:00 +0100736
Victor Stinner3e09e322013-12-03 01:22:06 +0100737.. seealso::
Victor Stinnerea3183f2013-12-03 01:08:00 +0100738
Victor Stinner6888b962014-10-11 16:15:58 +0200739 The :ref:`Hello World coroutine <asyncio-hello-world-coroutine>` example
740 uses a :ref:`coroutine <coroutine>`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100741
Victor Stinner8b863482014-01-27 10:07:50 +0100742
Victor Stinner7f314ed2014-10-15 18:49:16 +0200743.. _asyncio-date-callback:
744
745Display the current date with call_later()
Victor Stinnera092a612015-01-09 15:58:41 +0100746^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Victor Stinner7f314ed2014-10-15 18:49:16 +0200747
748Example of callback displaying the current date every second. The callback uses
749the :meth:`BaseEventLoop.call_later` method to reschedule itself during 5
750seconds, and then stops the event loop::
751
752 import asyncio
753 import datetime
754
755 def display_date(end_time, loop):
756 print(datetime.datetime.now())
757 if (loop.time() + 1.0) < end_time:
758 loop.call_later(1, display_date, end_time, loop)
759 else:
760 loop.stop()
761
762 loop = asyncio.get_event_loop()
763
764 # Schedule the first call to display_date()
765 end_time = loop.time() + 5.0
766 loop.call_soon(display_date, end_time, loop)
767
768 # Blocking call interrupted by loop.stop()
769 loop.run_forever()
770 loop.close()
771
772.. seealso::
773
774 The :ref:`coroutine displaying the current date
775 <asyncio-date-coroutine>` example uses a :ref:`coroutine
776 <coroutine>`.
777
778
Victor Stinner04e6df32014-10-11 16:16:27 +0200779.. _asyncio-watch-read-event:
Victor Stinner8b863482014-01-27 10:07:50 +0100780
Victor Stinner04e6df32014-10-11 16:16:27 +0200781Watch a file descriptor for read events
Victor Stinnera092a612015-01-09 15:58:41 +0100782^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Victor Stinner04e6df32014-10-11 16:16:27 +0200783
784Wait until a file descriptor received some data using the
785:meth:`BaseEventLoop.add_reader` method and then close the event loop::
786
787 import asyncio
Victor Stinnerccd8e342014-10-11 16:30:02 +0200788 try:
789 from socket import socketpair
790 except ImportError:
791 from asyncio.windows_utils import socketpair
Victor Stinner04e6df32014-10-11 16:16:27 +0200792
793 # Create a pair of connected file descriptors
Victor Stinnerccd8e342014-10-11 16:30:02 +0200794 rsock, wsock = socketpair()
Victor Stinner04e6df32014-10-11 16:16:27 +0200795 loop = asyncio.get_event_loop()
796
797 def reader():
798 data = rsock.recv(100)
799 print("Received:", data.decode())
Victor Stinner2cef3002014-10-23 22:38:46 +0200800 # We are done: unregister the file descriptor
Victor Stinner04e6df32014-10-11 16:16:27 +0200801 loop.remove_reader(rsock)
802 # Stop the event loop
803 loop.stop()
804
Victor Stinner2cef3002014-10-23 22:38:46 +0200805 # Register the file descriptor for read event
Victor Stinner04e6df32014-10-11 16:16:27 +0200806 loop.add_reader(rsock, reader)
807
808 # Simulate the reception of data from the network
809 loop.call_soon(wsock.send, 'abc'.encode())
810
811 # Run the event loop
812 loop.run_forever()
813
814 # We are done, close sockets and the event loop
815 rsock.close()
816 wsock.close()
817 loop.close()
818
819.. seealso::
820
821 The :ref:`register an open socket to wait for data using a protocol
822 <asyncio-register-socket>` example uses a low-level protocol created by the
823 :meth:`BaseEventLoop.create_connection` method.
824
825 The :ref:`register an open socket to wait for data using streams
826 <asyncio-register-socket-streams>` example uses high-level streams
827 created by the :func:`open_connection` function in a coroutine.
828
829
830Set signal handlers for SIGINT and SIGTERM
Victor Stinnera092a612015-01-09 15:58:41 +0100831^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Victor Stinner04e6df32014-10-11 16:16:27 +0200832
833Register handlers for signals :py:data:`SIGINT` and :py:data:`SIGTERM` using
834the :meth:`BaseEventLoop.add_signal_handler` method::
Victor Stinner8b863482014-01-27 10:07:50 +0100835
836 import asyncio
837 import functools
838 import os
839 import signal
840
841 def ask_exit(signame):
842 print("got signal %s: exit" % signame)
843 loop.stop()
844
845 loop = asyncio.get_event_loop()
846 for signame in ('SIGINT', 'SIGTERM'):
847 loop.add_signal_handler(getattr(signal, signame),
848 functools.partial(ask_exit, signame))
849
850 print("Event loop running forever, press CTRL+c to interrupt.")
851 print("pid %s: send SIGINT or SIGTERM to exit." % os.getpid())
Victor Stinner63b21a82014-07-05 15:38:59 +0200852 try:
853 loop.run_forever()
854 finally:
855 loop.close()
Victor Stinner2cef3002014-10-23 22:38:46 +0200856
857This example only works on UNIX.