tornado.platform.twisted — Run code written for Twisted on Tornado

This module contains a Twisted reactor build on the Tornado IOLoop, which lets you run applications and libraries written for Twisted in a Tornado application. To use it, simply call install at the beginning of the application:

import tornado.platform.twisted
tornado.platform.twisted.install()
from twisted.internet import reactor

When the app is ready to start, call IOLoop.instance().start() instead of reactor.run(). This will allow you to use a mixture of Twisted and Tornado code in the same process.

It is also possible to create a non-global reactor by calling tornado.platform.twisted.TornadoReactor(io_loop). However, if the IOLoop and reactor are to be short-lived (such as those used in unit tests), additional cleanup may be required. Specifically, it is recommended to call:

reactor.fireSystemEvent('shutdown')
reactor.disconnectAll()

before closing the IOLoop.

This module has been tested with Twisted versions 11.0.0 and 11.1.0.

tornado.platform.twisted.install(io_loop=None)

Install this package as the default Twisted reactor.

class tornado.platform.twisted.TornadoReactor(io_loop=None)

Twisted reactor built on the Tornado IOLoop.

Since it is intented to be used in applications where the top-level event loop is io_loop.start() rather than reactor.run(), it is implemented a little differently than other Twisted reactors. We override mainLoop instead of doIteration and must implement timed call functionality on top of IOLoop.add_timeout rather than using the implementation in PosixReactorBase.

Previous topic

tornado.database — Simple MySQL client wrapper

Next topic

tornado.websocket — Bidirectional communication to the browser

This Page