blob: 2e48d30d8aa105df8bbcb0aee0d25ca238cd5e34 [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
5Event loops
6===========
7
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
Eli Bendersky136fea22014-02-09 06:55:58 -080021Event loop policies and the default policy
22------------------------------------------
23
24Event loop management is abstracted with a *policy* pattern, to provide maximal
25flexibility for custom platforms and frameworks. Throughout the execution of a
26process, a single global policy object manages the event loops available to the
27process based on the calling context. A policy is an object implementing the
28:class:`AbstractEventLoopPolicy` interface.
29
30For most users of :mod:`asyncio`, policies never have to be dealt with
31explicitly, since the default global policy is sufficient.
32
33The default policy defines context as the current thread, and manages an event
34loop per thread that interacts with :mod:`asyncio`. The module-level functions
35:func:`get_event_loop` and :func:`set_event_loop` provide convenient access to
36event loops managed by the default policy.
37
Victor Stinnerea3183f2013-12-03 01:08:00 +010038Event loop functions
39--------------------
40
Eli Bendersky136fea22014-02-09 06:55:58 -080041The following functions are convenient shortcuts to accessing the methods of the
42global policy. Note that this provides access to the default policy, unless an
43alternative policy was set by calling :func:`set_event_loop_policy` earlier in
44the execution of the process.
Victor Stinnerea3183f2013-12-03 01:08:00 +010045
46.. function:: get_event_loop()
47
Eli Bendersky136fea22014-02-09 06:55:58 -080048 Equivalent to calling ``get_event_loop_policy().get_event_loop()``.
Victor Stinnerea3183f2013-12-03 01:08:00 +010049
50.. function:: set_event_loop(loop)
51
Eli Bendersky136fea22014-02-09 06:55:58 -080052 Equivalent to calling ``get_event_loop_policy().set_event_loop(loop)``.
Victor Stinnerea3183f2013-12-03 01:08:00 +010053
54.. function:: new_event_loop()
55
Eli Bendersky136fea22014-02-09 06:55:58 -080056 Equivalent to calling ``get_event_loop_policy().new_event_loop()``.
Victor Stinnerea3183f2013-12-03 01:08:00 +010057
Eli Bendersky136fea22014-02-09 06:55:58 -080058Event loop policy interface
59---------------------------
Victor Stinnerea3183f2013-12-03 01:08:00 +010060
Eli Bendersky136fea22014-02-09 06:55:58 -080061An event loop policy must implement the following interface:
62
63.. class:: AbstractEventLoopPolicy
64
65 .. method:: get_event_loop()
66
67 Get the event loop for current context. Returns an event loop object
68 implementing :class:`BaseEventLoop` interface, or raises an exception in case
69 no event loop has been set for the current context and the current policy
70 does not specify to create one. It should never return ``None``.
71
72 .. method:: set_event_loop(loop)
73
74 Set the event loop of the current context to *loop*.
75
76 .. method:: new_event_loop()
77
78 Create and return a new event loop object according to this policy's rules.
79 If there's need to set this loop as the event loop of the current context,
Larry Hastingsad88d7a2014-02-10 04:26:10 -080080 :meth:`set_event_loop` must be called explicitly.
Eli Bendersky136fea22014-02-09 06:55:58 -080081
82Access to the global loop policy
83--------------------------------
Victor Stinnerea3183f2013-12-03 01:08:00 +010084
85.. function:: get_event_loop_policy()
86
Eli Bendersky136fea22014-02-09 06:55:58 -080087 Get the current event loop policy.
Victor Stinnerea3183f2013-12-03 01:08:00 +010088
89.. function:: set_event_loop_policy(policy)
90
Eli Bendersky136fea22014-02-09 06:55:58 -080091 Set the current event loop policy. If *policy* is ``None``, the default
92 policy is restored.
Victor Stinnerea3183f2013-12-03 01:08:00 +010093
94Run an event loop
95-----------------
96
97.. method:: BaseEventLoop.run_forever()
98
99 Run until :meth:`stop` is called.
100
101.. method:: BaseEventLoop.run_until_complete(future)
102
Victor Stinner99c2ab42013-12-03 19:17:25 +0100103 Run until the :class:`Future` is done.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100104
Yury Selivanovf9200ae2014-02-20 16:20:44 -0500105 If the argument is a :ref:`coroutine <coroutine>`, it is wrapped
106 in a :class:`Task`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100107
108 Return the Future's result, or raise its exception.
109
110.. method:: BaseEventLoop.is_running()
111
112 Returns running status of event loop.
113
Victor Stinnerafbf8272013-12-03 02:05:42 +0100114.. method:: BaseEventLoop.stop()
Victor Stinnerea3183f2013-12-03 01:08:00 +0100115
116 Stop running the event loop.
117
118 Every callback scheduled before :meth:`stop` is called will run.
119 Callback scheduled after :meth:`stop` is called won't. However, those
120 callbacks will run if :meth:`run_forever` is called again later.
121
122.. method:: BaseEventLoop.close()
123
124 Close the event loop. The loop should not be running.
125
126 This clears the queues and shuts down the executor, but does not wait for
127 the executor to finish.
128
129 This is idempotent and irreversible. No other methods should be called after
130 this one.
131
132
133Calls
134-----
135
136.. method:: BaseEventLoop.call_soon(callback, \*args)
137
138 Arrange for a callback to be called as soon as possible.
139
140 This operates as a FIFO queue, callbacks are called in the order in
141 which they are registered. Each callback will be called exactly once.
142
143 Any positional arguments after the callback will be passed to the
144 callback when it is called.
145
Yury Selivanovd5797422014-02-19 20:58:44 -0500146 An instance of :class:`asyncio.Handle` is returned.
147
Victor Stinnerea3183f2013-12-03 01:08:00 +0100148.. method:: BaseEventLoop.call_soon_threadsafe(callback, \*args)
149
150 Like :meth:`call_soon`, but thread safe.
151
152
Victor Stinner45b27ed2014-02-01 02:36:43 +0100153.. _asyncio-delayed-calls:
154
Victor Stinnerea3183f2013-12-03 01:08:00 +0100155Delayed calls
156-------------
157
158The event loop has its own internal clock for computing timeouts.
159Which clock is used depends on the (platform-specific) event loop
160implementation; ideally it is a monotonic clock. This will generally be
161a different clock than :func:`time.time`.
162
Victor Stinner8b21d912014-02-18 09:37:43 +0100163.. note::
164
165 Timeouts (relative *delay* or absolute *when*) should not exceed one day.
166
Victor Stinner45b27ed2014-02-01 02:36:43 +0100167
Victor Stinnerea3183f2013-12-03 01:08:00 +0100168.. method:: BaseEventLoop.call_later(delay, callback, *args)
169
170 Arrange for the *callback* to be called after the given *delay*
171 seconds (either an int or float).
172
Yury Selivanovd5797422014-02-19 20:58:44 -0500173 An instance of :class:`asyncio.Handle` is returned.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100174
175 *callback* will be called exactly once per call to :meth:`call_later`.
176 If two callbacks are scheduled for exactly the same time, it is
177 undefined which will be called first.
178
179 The optional positional *args* will be passed to the callback when it
180 is called. If you want the callback to be called with some named
181 arguments, use a closure or :func:`functools.partial`.
182
183.. method:: BaseEventLoop.call_at(when, callback, *args)
184
185 Arrange for the *callback* to be called at the given absolute timestamp
186 *when* (an int or float), using the same time reference as :meth:`time`.
187
188 This method's behavior is the same as :meth:`call_later`.
189
190.. method:: BaseEventLoop.time()
191
192 Return the current time, as a :class:`float` value, according to the
193 event loop's internal clock.
194
Victor Stinner3e09e322013-12-03 01:22:06 +0100195.. seealso::
196
197 The :func:`asyncio.sleep` function.
198
Victor Stinnerea3183f2013-12-03 01:08:00 +0100199
200Creating connections
Victor Stinner0c6f1ca2013-12-03 01:46:39 +0100201--------------------
Victor Stinnerea3183f2013-12-03 01:08:00 +0100202
203.. 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)
204
205 Create a streaming transport connection to a given Internet *host* and
Victor Stinner03e9cb22014-02-19 13:32:34 +0100206 *port*: socket family :py:data:`~socket.AF_INET` or
207 :py:data:`~socket.AF_INET6` depending on *host* (or *family* if specified),
208 socket type :py:data:`~socket.SOCK_STREAM`. *protocol_factory* must be a
209 callable returning a :ref:`protocol <asyncio-protocol>` instance.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100210
Yury Selivanovf9200ae2014-02-20 16:20:44 -0500211 This method is a :ref:`coroutine <coroutine>` which will try to
Victor Stinnerea3183f2013-12-03 01:08:00 +0100212 establish the connection in the background. When successful, the
213 coroutine returns a ``(transport, protocol)`` pair.
214
215 The chronological synopsis of the underlying operation is as follows:
216
Victor Stinner9592edb2014-02-02 15:03:02 +0100217 #. The connection is established, and a :ref:`transport <asyncio-transport>`
Victor Stinnerea3183f2013-12-03 01:08:00 +0100218 is created to represent it.
219
220 #. *protocol_factory* is called without arguments and must return a
Victor Stinner9592edb2014-02-02 15:03:02 +0100221 :ref:`protocol <asyncio-protocol>` instance.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100222
223 #. The protocol instance is tied to the transport, and its
224 :meth:`connection_made` method is called.
225
226 #. The coroutine returns successfully with the ``(transport, protocol)``
227 pair.
228
229 The created transport is an implementation-dependent bidirectional stream.
230
231 .. note::
232 *protocol_factory* can be any kind of callable, not necessarily
233 a class. For example, if you want to use a pre-created
234 protocol instance, you can pass ``lambda: my_protocol``.
235
236 Options allowing to change how the connection is created:
237
238 * *ssl*: if given and not false, a SSL/TLS transport is created
239 (by default a plain TCP transport is created). If *ssl* is
240 a :class:`ssl.SSLContext` object, this context is used to create
241 the transport; if *ssl* is :const:`True`, a context with some
242 unspecified default settings is used.
243
244 * *server_hostname*, is only for use together with *ssl*,
245 and sets or overrides the hostname that the target server's certificate
246 will be matched against. By default the value of the *host* argument
247 is used. If *host* is empty, there is no default and you must pass a
248 value for *server_hostname*. If *server_hostname* is an empty
249 string, hostname matching is disabled (which is a serious security
250 risk, allowing for man-in-the-middle-attacks).
251
252 * *family*, *proto*, *flags* are the optional address family, protocol
253 and flags to be passed through to getaddrinfo() for *host* resolution.
254 If given, these should all be integers from the corresponding
255 :mod:`socket` module constants.
256
257 * *sock*, if given, should be an existing, already connected
258 :class:`socket.socket` object to be used by the transport.
259 If *sock* is given, none of *host*, *port*, *family*, *proto*, *flags*
260 and *local_addr* should be specified.
261
262 * *local_addr*, if given, is a ``(local_host, local_port)`` tuple used
263 to bind the socket to locally. The *local_host* and *local_port*
264 are looked up using getaddrinfo(), similarly to *host* and *port*.
265
Victor Stinnerc8ea8132014-01-23 11:02:09 +0100266 .. seealso::
267
268 The :func:`open_connection` function can be used to get a pair of
269 (:class:`StreamReader`, :class:`StreamWriter`) instead of a protocol.
270
Victor Stinnerea3183f2013-12-03 01:08:00 +0100271
Victor Stinner03e9cb22014-02-19 13:32:34 +0100272.. method:: BaseEventLoop.create_datagram_endpoint(protocol_factory, local_addr=None, remote_addr=None, \*, family=0, proto=0, flags=0)
273
274 Create datagram connection: socket family :py:data:`~socket.AF_INET` or
275 :py:data:`~socket.AF_INET6` depending on *host* (or *family* if specified),
276 socket type :py:data:`~socket.SOCK_DGRAM`.
277
Yury Selivanovf9200ae2014-02-20 16:20:44 -0500278 This method is a :ref:`coroutine <coroutine>` which will try to
Victor Stinner03e9cb22014-02-19 13:32:34 +0100279 establish the connection in the background. When successful, the
280 coroutine returns a ``(transport, protocol)`` pair.
281
282 See the :meth:`BaseEventLoop.create_connection` method for parameters.
283
284
285.. method:: BaseEventLoop.create_unix_connection(protocol_factory, path, \*, ssl=None, sock=None, server_hostname=None)
286
287 Create UNIX connection: socket family :py:data:`~socket.AF_UNIX`, socket
288 type :py:data:`~socket.SOCK_STREAM`. The :py:data:`~socket.AF_UNIX` socket
289 family is used to communicate between processes on the same machine
290 efficiently.
291
Yury Selivanovf9200ae2014-02-20 16:20:44 -0500292 This method is a :ref:`coroutine <coroutine>` which will try to
Victor Stinner03e9cb22014-02-19 13:32:34 +0100293 establish the connection in the background. When successful, the
294 coroutine returns a ``(transport, protocol)`` pair.
295
296 See the :meth:`BaseEventLoop.create_connection` method for parameters.
297
298 Availability: UNIX.
299
300
Victor Stinnerea3183f2013-12-03 01:08:00 +0100301Creating listening connections
302------------------------------
303
304.. 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)
305
Yury Selivanovf9200ae2014-02-20 16:20:44 -0500306 A :ref:`coroutine <coroutine>` method which creates a TCP server bound to
307 host and port.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100308
309 The return value is a :class:`AbstractServer` object which can be used to stop
310 the service.
311
312 If *host* is an empty string or None all interfaces are assumed
313 and a list of multiple sockets will be returned (most likely
314 one for IPv4 and another one for IPv6).
315
316 *family* can be set to either :data:`~socket.AF_INET` or
317 :data:`~socket.AF_INET6` to force the socket to use IPv4 or IPv6. If not set
318 it will be determined from host (defaults to :data:`~socket.AF_UNSPEC`).
319
320 *flags* is a bitmask for :meth:`getaddrinfo`.
321
322 *sock* can optionally be specified in order to use a preexisting
323 socket object.
324
325 *backlog* is the maximum number of queued connections passed to
326 :meth:`~socket.socket.listen` (defaults to 100).
327
328 ssl can be set to an :class:`~ssl.SSLContext` to enable SSL over the
329 accepted connections.
330
331 *reuse_address* tells the kernel to reuse a local socket in
332 TIME_WAIT state, without waiting for its natural timeout to
333 expire. If not specified will automatically be set to True on
334 UNIX.
335
Victor Stinnerc8ea8132014-01-23 11:02:09 +0100336 .. seealso::
337
338 The function :func:`start_server` creates a (:class:`StreamReader`,
339 :class:`StreamWriter`) pair and calls back a function with this pair.
340
Victor Stinnerea3183f2013-12-03 01:08:00 +0100341
Victor Stinner03e9cb22014-02-19 13:32:34 +0100342.. method:: BaseEventLoop.create_unix_server(protocol_factory, path=None, \*, sock=None, backlog=100, ssl=None)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100343
Victor Stinner03e9cb22014-02-19 13:32:34 +0100344 Similar to :meth:`BaseEventLoop.create_server`, but specific to the
345 socket family :py:data:`~socket.AF_UNIX`.
346
347 Availability: UNIX.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100348
349
350
Victor Stinnerc1567df2014-02-08 23:22:58 +0100351Watch file descriptors
352----------------------
353
354.. method:: BaseEventLoop.add_reader(fd, callback, \*args)
355
356 Start watching the file descriptor for read availability and then call the
357 *callback* with specified arguments.
358
359.. method:: BaseEventLoop.remove_reader(fd)
360
361 Stop watching the file descriptor for read availability.
362
363.. method:: BaseEventLoop.add_writer(fd, callback, \*args)
364
365 Start watching the file descriptor for write availability and then call the
366 *callback* with specified arguments.
367
368.. method:: BaseEventLoop.remove_writer(fd)
369
370 Stop watching the file descriptor for write availability.
371
372
373Low-level socket operations
374---------------------------
375
376.. method:: BaseEventLoop.sock_recv(sock, nbytes)
377
378 Receive data from the socket. The return value is a bytes object
379 representing the data received. The maximum amount of data to be received
380 at once is specified by *nbytes*.
381
Yury Selivanovf9200ae2014-02-20 16:20:44 -0500382 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100383
384 .. seealso::
385
386 The :meth:`socket.socket.recv` method.
387
388.. method:: BaseEventLoop.sock_sendall(sock, data)
389
390 Send data to the socket. The socket must be connected to a remote socket.
391 This method continues to send data from *data* until either all data has
392 been sent or an error occurs. ``None`` is returned on success. On error,
393 an exception is raised, and there is no way to determine how much data, if
Yury Selivanovf9200ae2014-02-20 16:20:44 -0500394 any, was successfully processed by the receiving end of the connection.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100395
Yury Selivanovf9200ae2014-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.sendall` method.
401
402.. method:: BaseEventLoop.sock_connect(sock, address)
403
404 Connect to a remote socket at *address*.
405
Victor Stinner28773462014-02-13 09:24:37 +0100406 The *address* must be already resolved to avoid the trap of hanging the
407 entire event loop when the address requires doing a DNS lookup. For
408 example, it must be an IP address, not an hostname, for
409 :py:data:`~socket.AF_INET` and :py:data:`~socket.AF_INET6` address families.
410 Use :meth:`getaddrinfo` to resolve the hostname asynchronously.
411
Yury Selivanovf9200ae2014-02-20 16:20:44 -0500412 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100413
414 .. seealso::
415
416 The :meth:`BaseEventLoop.create_connection` method, the
417 :func:`open_connection` function and the :meth:`socket.socket.connect`
418 method.
419
420
421.. method:: BaseEventLoop.sock_accept(sock)
422
423 Accept a connection. The socket must be bound to an address and listening
424 for connections. The return value is a pair ``(conn, address)`` where *conn*
425 is a *new* socket object usable to send and receive data on the connection,
426 and *address* is the address bound to the socket on the other end of the
427 connection.
428
Yury Selivanovf9200ae2014-02-20 16:20:44 -0500429 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerc1567df2014-02-08 23:22:58 +0100430
431 .. seealso::
432
433 The :meth:`BaseEventLoop.create_server` method, the :func:`start_server`
434 function and the :meth:`socket.socket.accept` method.
435
436
437Resolve host name
438-----------------
Victor Stinnerea3183f2013-12-03 01:08:00 +0100439
440.. method:: BaseEventLoop.getaddrinfo(host, port, \*, family=0, type=0, proto=0, flags=0)
441
Yury Selivanovf9200ae2014-02-20 16:20:44 -0500442 This method is a :ref:`coroutine <coroutine>`, similar to
443 :meth:`socket.getaddrinfo` function but non-blocking.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100444
445.. method:: BaseEventLoop.getnameinfo(sockaddr, flags=0)
446
Yury Selivanovf9200ae2014-02-20 16:20:44 -0500447 This method is a :ref:`coroutine <coroutine>`, similar to
448 :meth:`socket.getnameinfo` function but non-blocking.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100449
450
451Running subprocesses
452--------------------
453
454Run subprocesses asynchronously using the :mod:`subprocess` module.
455
Victor Stinner041ff9b2014-01-28 02:24:22 +0100456.. note::
457
458 On Windows, the default event loop uses
459 :class:`selectors.SelectSelector` which only supports sockets. The
Victor Stinner45b27ed2014-02-01 02:36:43 +0100460 :class:`ProactorEventLoop` should be used to support subprocesses.
Victor Stinner041ff9b2014-01-28 02:24:22 +0100461
462.. note::
463
Ned Deilyeecbbad2014-01-27 19:03:07 -0700464 On Mac OS X older than 10.9 (Mavericks), :class:`selectors.KqueueSelector`
Victor Stinner041ff9b2014-01-28 02:24:22 +0100465 does not support character devices like PTY, whereas it is used by the
466 default event loop. The :class:`SelectorEventLoop` can be used with
Victor Stinner3bc647c2014-02-03 00:35:46 +0100467 :class:`SelectSelector` or :class:`PollSelector` to handle character devices
468 on Mac OS X 10.6 (Snow Leopard) and later.
Victor Stinner041ff9b2014-01-28 02:24:22 +0100469
Victor Stinnerea3183f2013-12-03 01:08:00 +0100470.. method:: BaseEventLoop.subprocess_exec(protocol_factory, \*args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=False, shell=False, bufsize=0, \*\*kwargs)
471
472 XXX
473
Yury Selivanovf9200ae2014-02-20 16:20:44 -0500474 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100475
476 See the constructor of the :class:`subprocess.Popen` class for parameters.
477
478.. method:: BaseEventLoop.subprocess_shell(protocol_factory, cmd, \*, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=False, shell=True, bufsize=0, \*\*kwargs)
479
480 XXX
481
Yury Selivanovf9200ae2014-02-20 16:20:44 -0500482 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100483
484 See the constructor of the :class:`subprocess.Popen` class for parameters.
485
486.. method:: BaseEventLoop.connect_read_pipe(protocol_factory, pipe)
487
488 Register read pipe in eventloop.
489
490 *protocol_factory* should instantiate object with :class:`Protocol`
491 interface. pipe is file-like object already switched to nonblocking.
492 Return pair (transport, protocol), where transport support
493 :class:`ReadTransport` interface.
494
Yury Selivanovf9200ae2014-02-20 16:20:44 -0500495 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100496
497.. method:: BaseEventLoop.connect_write_pipe(protocol_factory, pipe)
498
499 Register write pipe in eventloop.
500
501 *protocol_factory* should instantiate object with :class:`BaseProtocol`
502 interface. Pipe is file-like object already switched to nonblocking.
503 Return pair (transport, protocol), where transport support
504 :class:`WriteTransport` interface.
505
Yury Selivanovf9200ae2014-02-20 16:20:44 -0500506 This method is a :ref:`coroutine <coroutine>`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100507
Victor Stinner08444382014-02-02 22:43:39 +0100508.. seealso::
509
510 The :func:`create_subprocess_exec` and :func:`create_subprocess_shell`
511 functions.
512
Victor Stinnerea3183f2013-12-03 01:08:00 +0100513
Victor Stinner8b863482014-01-27 10:07:50 +0100514UNIX signals
515------------
516
517Availability: UNIX only.
518
519.. method:: BaseEventLoop.add_signal_handler(signum, callback, \*args)
520
521 Add a handler for a signal.
522
523 Raise :exc:`ValueError` if the signal number is invalid or uncatchable.
524 Raise :exc:`RuntimeError` if there is a problem setting up the handler.
525
526.. method:: BaseEventLoop.remove_signal_handler(sig)
527
528 Remove a handler for a signal.
529
530 Return ``True`` if a signal handler was removed, ``False`` if not.
531
532.. seealso::
533
534 The :mod:`signal` module.
535
536
Victor Stinnerea3183f2013-12-03 01:08:00 +0100537Executor
538--------
539
540Call a function in an :class:`~concurrent.futures.Executor` (pool of threads or
541pool of processes). By default, an event loop uses a thread pool executor
542(:class:`~concurrent.futures.ThreadPoolExecutor`).
543
544.. method:: BaseEventLoop.run_in_executor(executor, callback, \*args)
545
546 Arrange for a callback to be called in the specified executor.
547
548 *executor* is a :class:`~concurrent.futures.Executor` instance,
549 the default executor is used if *executor* is ``None``.
550
Yury Selivanovf9200ae2014-02-20 16:20:44 -0500551 This method is a :ref:`coroutine <coroutine>`.
552
Victor Stinnerea3183f2013-12-03 01:08:00 +0100553.. method:: BaseEventLoop.set_default_executor(executor)
554
555 Set the default executor used by :meth:`run_in_executor`.
556
557
Yury Selivanovd5797422014-02-19 20:58:44 -0500558Error Handling API
559------------------
560
561Allows to customize how exceptions are handled in the event loop.
562
563.. method:: BaseEventLoop.set_exception_handler(handler)
564
565 Set *handler* as the new event loop exception handler.
566
567 If *handler* is ``None``, the default exception handler will
568 be set.
569
570 If *handler* is a callable object, it should have a
571 matching signature to ``(loop, context)``, where ``loop``
572 will be a reference to the active event loop, ``context``
573 will be a ``dict`` object (see :meth:`call_exception_handler`
574 documentation for details about context).
575
576.. method:: BaseEventLoop.default_exception_handler(context)
577
578 Default exception handler.
579
580 This is called when an exception occurs and no exception
581 handler is set, and can be called by a custom exception
582 handler that wants to defer to the default behavior.
583
584 *context* parameter has the same meaning as in
585 :meth:`call_exception_handler`.
586
587.. method:: BaseEventLoop.call_exception_handler(context)
588
589 Call the current event loop exception handler.
590
591 *context* is a ``dict`` object containing the following keys
592 (new keys may be introduced later):
593
594 * 'message': Error message;
595 * 'exception' (optional): Exception object;
596 * 'future' (optional): :class:`asyncio.Future` instance;
597 * 'handle' (optional): :class:`asyncio.Handle` instance;
598 * 'protocol' (optional): :ref:`Protocol <asyncio-protocol>` instance;
599 * 'transport' (optional): :ref:`Transport <asyncio-transport>` instance;
600 * 'socket' (optional): :class:`socket.socket` instance.
601
602 .. note::
603
604 Note: this method should not be overloaded in subclassed
605 event loops. For any custom exception handling, use
606 :meth:`set_exception_handler()` method.
607
Victor Stinner7ef60cd2014-02-19 23:15:02 +0100608Debug mode
609----------
610
611.. method:: BaseEventLoop.get_debug()
612
Victor Stinneraabc1312014-02-20 01:44:10 +0100613 Get the debug mode (:class:`bool`) of the event loop, ``False`` by default.
Victor Stinner7ef60cd2014-02-19 23:15:02 +0100614
615.. method:: BaseEventLoop.set_debug(enabled: bool)
616
617 Set the debug mode of the event loop.
618
619.. seealso::
620
621 The :ref:`Develop with asyncio <asyncio-dev>` section.
622
623
Victor Stinner8c462c52014-01-24 18:11:43 +0100624Server
625------
626
627.. class:: AbstractServer
628
629 Abstract server returned by :func:`BaseEventLoop.create_server`.
630
631 .. method:: close()
632
633 Stop serving. This leaves existing connections open.
634
635 .. method:: wait_closed()
636
Yury Selivanovf9200ae2014-02-20 16:20:44 -0500637 A :ref:`coroutine <coroutine>` to wait until service is closed.
Victor Stinner8c462c52014-01-24 18:11:43 +0100638
639
Yury Selivanovd5797422014-02-19 20:58:44 -0500640Handle
641------
642
643.. class:: Handle
644
645 A callback wrapper object returned by :func:`BaseEventLoop.call_soon`,
646 :func:`BaseEventLoop.call_soon_threadsafe`, :func:`BaseEventLoop.call_later`,
647 and :func:`BaseEventLoop.call_at`.
648
649 .. method:: cancel()
650
651 Cancel the call.
652
653
Victor Stinner3e09e322013-12-03 01:22:06 +0100654.. _asyncio-hello-world-callback:
Victor Stinnerea3183f2013-12-03 01:08:00 +0100655
Victor Stinner3e09e322013-12-03 01:22:06 +0100656Example: Hello World (callback)
657-------------------------------
Victor Stinnerea3183f2013-12-03 01:08:00 +0100658
659Print ``Hello World`` every two seconds, using a callback::
660
661 import asyncio
662
663 def print_and_repeat(loop):
664 print('Hello World')
665 loop.call_later(2, print_and_repeat, loop)
666
667 loop = asyncio.get_event_loop()
Victor Stinnerdbd89502013-12-10 02:47:22 +0100668 loop.call_soon(print_and_repeat, loop)
Victor Stinnerea3183f2013-12-03 01:08:00 +0100669 loop.run_forever()
670
Victor Stinner3e09e322013-12-03 01:22:06 +0100671.. seealso::
Victor Stinnerea3183f2013-12-03 01:08:00 +0100672
Victor Stinner3e09e322013-12-03 01:22:06 +0100673 :ref:`Hello World example using a coroutine <asyncio-hello-world-coroutine>`.
Victor Stinnerea3183f2013-12-03 01:08:00 +0100674
Victor Stinner8b863482014-01-27 10:07:50 +0100675
676Example: Set signal handlers for SIGINT and SIGTERM
677---------------------------------------------------
678
679Register handlers for signals :py:data:`SIGINT` and :py:data:`SIGTERM`::
680
681 import asyncio
682 import functools
683 import os
684 import signal
685
686 def ask_exit(signame):
687 print("got signal %s: exit" % signame)
688 loop.stop()
689
690 loop = asyncio.get_event_loop()
691 for signame in ('SIGINT', 'SIGTERM'):
692 loop.add_signal_handler(getattr(signal, signame),
693 functools.partial(ask_exit, signame))
694
695 print("Event loop running forever, press CTRL+c to interrupt.")
696 print("pid %s: send SIGINT or SIGTERM to exit." % os.getpid())
697 loop.run_forever()
698