### Navigation
- [index](# "General Index")
- [modules](# "Python Module Index") |
- [next](# "tornado.platform.caresresolver — Asynchronous DNS Resolver using C-Ares") |
- [previous](# "tornado.wsgi — Interoperability with other Python frameworks and servers") |
- [Tornado 4.4.dev1 documentation](#) »
- [Integration with other services](#) »
# `tornado.platform.asyncio` — Bridge between `asyncio` and Tornado
Bridges between the [`asyncio`](https://docs.python.org/3.4/library/asyncio.html#module-asyncio "(in Python v3.4)") [https://docs.python.org/3.4/library/asyncio.html#module-asyncio] module and Tornado IOLoop.
New in version 3.2.
This module integrates Tornado with the `asyncio` module introducedin Python 3.4 (and available [as a separate download](https://pypi.python.org/pypi/asyncio) [https://pypi.python.org/pypi/asyncio] for Python 3.3). This makesit possible to combine the two libraries on the same event loop.
Most applications should use [`AsyncIOMainLoop`](# "tornado.platform.asyncio.AsyncIOMainLoop") to run Tornado on thedefault `asyncio` event loop. Applications that need to run eventloops on multiple threads may use [`AsyncIOLoop`](# "tornado.platform.asyncio.AsyncIOLoop") to create multipleloops.
Note
Tornado requires the [`add_reader`](https://docs.python.org/3.4/library/asyncio-eventloop.html#asyncio.BaseEventLoop.add_reader "(in Python v3.4)") [https://docs.python.org/3.4/library/asyncio-eventloop.html#asyncio.BaseEventLoop.add_reader] family of methods,so it is not compatible with the [`ProactorEventLoop`](https://docs.python.org/3.4/library/asyncio-eventloops.html#asyncio.ProactorEventLoop "(in Python v3.4)") [https://docs.python.org/3.4/library/asyncio-eventloops.html#asyncio.ProactorEventLoop] on Windows.Use the [`SelectorEventLoop`](https://docs.python.org/3.4/library/asyncio-eventloops.html#asyncio.SelectorEventLoop "(in Python v3.4)") [https://docs.python.org/3.4/library/asyncio-eventloops.html#asyncio.SelectorEventLoop] instead.
*class *`tornado.platform.asyncio.``AsyncIOMainLoop`[[source]](#)
`AsyncIOMainLoop` creates an [`IOLoop`](# "tornado.ioloop.IOLoop") that corresponds to thecurrent `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()
~~~
*class *`tornado.platform.asyncio.``AsyncIOLoop`[[source]](#)
`AsyncIOLoop` is an [`IOLoop`](# "tornado.ioloop.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 objectcan be accessed with the `asyncio_loop` attribute.
`tornado.platform.asyncio.``to_tornado_future`(*asyncio_future*)[[source]](#)
Convert an [`asyncio.Future`](https://docs.python.org/3.4/library/asyncio-task.html#asyncio.Future "(in Python v3.4)") [https://docs.python.org/3.4/library/asyncio-task.html#asyncio.Future] to a [`tornado.concurrent.Future`](# "tornado.concurrent.Future").
New in version 4.1.
`tornado.platform.asyncio.``to_asyncio_future`(*tornado_future*)[[source]](#)
Convert a Tornado yieldable object to an [`asyncio.Future`](https://docs.python.org/3.4/library/asyncio-task.html#asyncio.Future "(in Python v3.4)") [https://docs.python.org/3.4/library/asyncio-task.html#asyncio.Future].
New in version 4.1.
Changed in version 4.3: Now accepts any yieldable object, not just[`tornado.concurrent.Future`](# "tornado.concurrent.Future").
© Copyright 2009-2016, The Tornado Authors. Created using [Sphinx](http://sphinx-doc.org/) 1.3.5.
- User's guide
- Introduction
- Asynchronous and non-Blocking I/O
- Coroutines
- Queue example - a concurrent web spider
- Structure of a Tornado web application
- Templates and UI
- Authentication and security
- Running and deploying
- Web framework
- tornado.web — RequestHandler and Application classes
- tornado.template — Flexible output generation
- tornado.escape — Escaping and string manipulation
- tornado.locale — Internationalization support
- tornado.websocket — Bidirectional communication to the browser
- HTTP servers and clients
- tornado.httpserver — Non-blocking HTTP server
- tornado.httpclient — Asynchronous HTTP client
- tornado.httputil — Manipulate HTTP headers and URLs
- tornado.http1connection – HTTP/1.x client/server implementation
- Asynchronous networking
- tornado.ioloop — Main event loop
- tornado.iostream — Convenient wrappers for non-blocking sockets
- tornado.netutil — Miscellaneous network utilities
- tornado.tcpclient — IOStream connection factory
- tornado.tcpserver — Basic IOStream-based TCP server
- Coroutines and concurrency
- tornado.gen — Simplify asynchronous code
- tornado.concurrent — Work with threads and futures
- tornado.locks – Synchronization primitives
- tornado.queues – Queues for coroutines
- tornado.process — Utilities for multiple processes
- Integration with other services
- tornado.auth — Third-party login with OpenID and OAuth
- tornado.wsgi — Interoperability with other Python frameworks and servers
- tornado.platform.asyncio — Bridge between asyncio and Tornado
- tornado.platform.caresresolver — Asynchronous DNS Resolver using C-Ares
- tornado.platform.twisted — Bridges between Twisted and Tornado
- Utilities
- tornado.autoreload — Automatically detect code changes in development
- tornado.log — Logging support
- tornado.options — Command-line parsing
- tornado.stack_context — Exception handling across asynchronous callbacks
- tornado.testing — Unit testing support for asynchronous code
- tornado.util — General-purpose utilities
- Frequently Asked Questions
- Release notes
- What's new in Tornado 4.3
- What's new in Tornado 4.2.1
- What's new in Tornado 4.2
- What's new in Tornado 4.1
- What's new in Tornado 4.0.2
- What's new in Tornado 4.0.1
- What's new in Tornado 4.0
- What's new in Tornado 3.2.2
- What's new in Tornado 3.2.1
- What's new in Tornado 3.2
- What's new in Tornado 3.1.1
- What's new in Tornado 3.1
- What's new in Tornado 3.0.2
- What's new in Tornado 3.0.1
- What's new in Tornado 3.0
- What's new in Tornado 2.4.1
- What's new in Tornado 2.4
- What's new in Tornado 2.3
- What's new in Tornado 2.2.1
- What's new in Tornado 2.2
- What's new in Tornado 2.1.1
- What's new in Tornado 2.1
- What's new in Tornado 2.0
- What's new in Tornado 1.2.1
- What's new in Tornado 1.2
- What's new in Tornado 1.1.1
- What's new in Tornado 1.1
- What's new in Tornado 1.0.1
- What's new in Tornado 1.0