# `tornado.platform.asyncio` — Bridge between `asyncio` and Tornado

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 (and available as a separate download for Python 3.3). This makes it possible to combine the two libraries on the same event loop.

Most applications should use `AsyncIOMainLoop` to run Tornado on the default `asyncio` event loop. Applications that need to run event loops on multiple threads may use `AsyncIOLoop` to create multiple loops.

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`

  `AsyncIOMainLoop` creates an `IOLoop` that corresponds to the current `asyncio` event loop (i.e. the one returned by `asyncio.get_event_loop()`). Recommended usage:

      from tornado.platform.asyncio import AsyncIOMainLoop
      import asyncio
      AsyncIOMainLoop().install()
      asyncio.get_event_loop().run_forever()

  See also `tornado.ioloop.IOLoop.install()` for general notes on installing alternative IOLoops.

class `tornado.platform.asyncio.``AsyncIOLoop`

  `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. Recommended usage:

      from tornado.ioloop import IOLoop
      IOLoop.configure('tornado.platform.asyncio.AsyncIOLoop')
      IOLoop.current().start()

  Each `AsyncIOLoop` creates a new `asyncio.EventLoop`; this object can be accessed with the `asyncio_loop` attribute.

`tornado.platform.asyncio.``to_tornado_future`(asyncio_future)

  Convert an `asyncio.Future` to a `tornado.concurrent.Future`.

  New in version 4.1.

`tornado.platform.asyncio.``to_asyncio_future`(tornado_future)

  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`.