| ``tornado.platform.twisted`` --- Run code written for Twisted on Tornado |
| ======================================================================== |
| |
| .. module:: tornado.platform.twisted |
| |
| 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. |
| |
| .. function:: install(io_loop=None) |
| |
| Install this package as the default Twisted reactor. |
| |
| .. class:: 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`. |