Bridges between the asyncio
module and Tornado IOLoop.
New in version 3.2.
This module integrates Tornado with the asyncio
module introduced
in Python 3.4. This makes it possible to combine the two libraries on
the same event loop.
Deprecated since version 5.0: While the code in this module is still used, it is now enabled
automatically when asyncio
is available, so applications should
no longer need to refer to this module directly.
Note
Tornado requires the add_reader
family of
methods, so it is not compatible with the ProactorEventLoop
on
Windows. Use the SelectorEventLoop
instead.
class tornado.platform.asyncio.AsyncIOMainLoop[source]
AsyncIOMainLoop
creates an IOLoop
that corresponds to the
current asyncio
event loop (i.e. the one returned by
asyncio.get_event_loop()
).
Deprecated since version 5.0: Now used automatically when appropriate; it is no longer necessary to refer to this class directly.
Changed in version 5.0: Closing an AsyncIOMainLoop
now closes the underlying asyncio loop.
class tornado.platform.asyncio.AsyncIOLoop[source]
AsyncIOLoop
is an IOLoop
that runs on an asyncio
event loop.
This class follows the usual Tornado semantics for creating new
IOLoops
; these loops are not necessarily related to the
asyncio
default event loop.
Each AsyncIOLoop
creates a new asyncio.EventLoop
; this object
can be accessed with the asyncio_loop
attribute.
Changed in version 5.0: When an AsyncIOLoop
becomes the current IOLoop
, it also sets
the current asyncio
event loop.
Deprecated since version 5.0: Now used automatically when appropriate; it is no longer necessary to refer to this class directly.
tornado.platform.asyncio.to_tornado_future(asyncio_future)[source]
Convert an asyncio.Future
to a tornado.concurrent.Future
.
New in version 4.1.
Deprecated since version 5.0: Tornado Futures
have been merged with asyncio.Future
,
so this method is now a no-op.
tornado.platform.asyncio.to_asyncio_future(tornado_future)[source]
Convert a Tornado yieldable object to an asyncio.Future
.
New in version 4.1.
Changed in version 4.3: Now accepts any yieldable object, not just
tornado.concurrent.Future
.
Deprecated since version 5.0: Tornado Futures
have been merged with asyncio.Future
,
so this method is now equivalent to tornado.gen.convert_yielded
.
class tornado.platform.asyncio.AnyThreadEventLoopPolicy[source]
Event loop policy that allows loop creation on any thread.
The default asyncio
event loop policy only automatically creates
event loops in the main threads. Other threads must create event
loops explicitly or asyncio.get_event_loop
(and therefore
IOLoop.current
) will fail. Installing this policy allows event
loops to be created automatically on any thread, matching the
behavior of Tornado versions prior to 5.0 (or 5.0 on Python 2).
Usage:
asyncio.set_event_loop_policy(AnyThreadEventLoopPolicy())
New in version 5.0.