企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
### Navigation - [index](# "General Index") - [modules](# "Python Module Index") | - [next](# "Utilities") | - [previous](# "tornado.platform.caresresolver — Asynchronous DNS Resolver using C-Ares") | - [Tornado 4.4.dev1 documentation](#) » - [Integration with other services](#) » # `tornado.platform.twisted` — Bridges between Twisted and Tornado Bridges between the Twisted reactor and Tornado IOLoop. This module lets you run applications and libraries written forTwisted in a Tornado application. It can be used in two modes,depending on which library's underlying event loop you want to use. This module has been tested with Twisted versions 11.0.0 and newer. ### Twisted on Tornado *class *`tornado.platform.twisted.``TornadoReactor`(*io_loop=None*)[[source]](#) Twisted reactor built on the Tornado IOLoop. [`TornadoReactor`](# "tornado.platform.twisted.TornadoReactor") implements the Twisted reactor interface on top ofthe Tornado IOLoop. To use it, simply call [`install`](# "tornado.platform.twisted.install") at the beginningof the application: ~~~ import tornado.platform.twisted tornado.platform.twisted.install() from twisted.internet import reactor ~~~ When the app is ready to start, call `IOLoop.current().start()`instead of `reactor.run()`. It is also possible to create a non-global reactor by calling`tornado.platform.twisted.TornadoReactor(io_loop)`. However, ifthe [`IOLoop`](# "tornado.ioloop.IOLoop") and reactor are to be short-lived (such as those used inunit tests), additional cleanup may be required. Specifically, it isrecommended to call: ~~~ reactor.fireSystemEvent('shutdown') reactor.disconnectAll() ~~~ before closing the [`IOLoop`](# "tornado.ioloop.IOLoop"). Changed in version 4.1: The `io_loop` argument is deprecated. `tornado.platform.twisted.``install`(*io_loop=None*)[[source]](#) Install this package as the default Twisted reactor. `install()` must be called very early in the startup process,before most other twisted-related imports. Conversely, because itinitializes the [`IOLoop`](# "tornado.ioloop.IOLoop"), it cannot be called before[`fork_processes`](# "tornado.process.fork_processes") or multi-process [`start`](# "tornado.tcpserver.TCPServer.start"). Theseconflicting requirements make it difficult to use [`TornadoReactor`](# "tornado.platform.twisted.TornadoReactor")in multi-process mode, and an external process manager such as`supervisord` is recommended instead. Changed in version 4.1: The `io_loop` argument is deprecated. ### Tornado on Twisted *class *`tornado.platform.twisted.``TwistedIOLoop`[[source]](#) IOLoop implementation that runs on Twisted. [`TwistedIOLoop`](# "tornado.platform.twisted.TwistedIOLoop") implements the Tornado IOLoop interface on top ofthe Twisted reactor. Recommended usage: ~~~ from tornado.platform.twisted import TwistedIOLoop from twisted.internet import reactor TwistedIOLoop().install() # Set up your tornado application as usual using `IOLoop.instance` reactor.run() ~~~ Uses the global Twisted reactor by default. To create multiple`TwistedIOLoops` in the same process, you must pass a unique reactorwhen constructing each one. Not compatible with [`tornado.process.Subprocess.set_exit_callback`](# "tornado.process.Subprocess.set_exit_callback")because the `SIGCHLD` handlers used by Tornado and Twisted conflictwith each other. ### Twisted DNS resolver *class *`tornado.platform.twisted.``TwistedResolver`[[source]](#) Twisted-based asynchronous resolver. This is a non-blocking and non-threaded resolver. It isrecommended only when threads cannot be used, since it haslimitations compared to the standard `getaddrinfo`-based[`Resolver`](# "tornado.netutil.Resolver") and[`ThreadedResolver`](# "tornado.netutil.ThreadedResolver"). Specifically, it returns atmost one result, and arguments other than `host` and `family`are ignored. It may fail to resolve when `family` is not`socket.AF_UNSPEC`. Requires Twisted 12.1 or newer. Changed in version 4.1: The `io_loop` argument is deprecated. © Copyright 2009-2016, The Tornado Authors. Created using [Sphinx](http://sphinx-doc.org/) 1.3.5.