Skip to main content

tornado.wsgi —与其他Python框架和服务器的互操作性

WSGI支持Tornado Web框架。

WSGI是Web服务器的Python标准,允许Tornado和其他Python Web框架和服务器之间的互操作性。此模块以两种方式提供WSGI支持:

  • WSGIAdaptertornado.web.Application 转换为WSGI应用程序接口。这对于在另一个HTTP服务器(如Google App Engine)上运行Tornado应用很有用。有关应用的限制,请参阅 WSGIAdapter 类文档。

  • WSGIContainer 允许您在Tornado HTTP服务器上运行其他WSGI应用程序和框架。例如,使用此类,您可以在单个服务器中混合使用Django和Tornado处理程序。

在WSGI服务器上运行Tornado应用程序

class tornado.wsgi.WSGIAdapter(application)[源代码]

tornado.web.Application 实例转换为WSGI应用程序。

用法示例:

import tornado.web
import tornado.wsgi
import wsgiref.simple_server

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

if __name__ == "__main__":
    application = tornado.web.Application([
        (r"/", MainHandler),
    ])
    wsgi_app = tornado.wsgi.WSGIAdapter(application)
    server = wsgiref.simple_server.make_server('', 8888, wsgi_app)
    server.serve_forever()

有关使用此模块在Google App Engine上运行Tornado应用程序的示例,请参阅 appengine演示

在WSGI模式下,不支持异步方法。这意味着不可能使用 AsyncHTTPClient,或 tornado.authtornado.websocket 模块。

4.0 新版功能.

class tornado.wsgi.WSGIApplication(handlers=None, default_host='', transforms=None, **settings)[源代码]

WSGI等同于 tornado.web.Application

4.0 版后已移除: 使用常规 Application 并将其包装在 WSGIAdapter 中。

在Tornado服务器上运行WSGI应用程序

class tornado.wsgi.WSGIContainer(wsgi_application)[源代码]

使一个WSGI兼容的功能可在Tornado的HTTP服务器上运行。

警告

WSGI是一个 synchronous 接口,而Tornado的并发模型是基于单线程异步执行。这意味着,使用Tornado的 WSGIContainer 运行WSGI应用程序是 不可扩展,而不是像 gunicornuwsgi 那样在多线程WSGI服务器中运行相同的应用程序。仅当在同样的过程中组合Tornado和WSGI有利于降低可伸缩性时才使用 WSGIContainer

将WSGI函数包装在 WSGIContainer 中,并将其传递给 HTTPServer 以运行它。例如:

def simple_app(environ, start_response):
    status = "200 OK"
    response_headers = [("Content-type", "text/plain")]
    start_response(status, response_headers)
    return ["Hello world!\n"]

container = tornado.wsgi.WSGIContainer(simple_app)
http_server = tornado.httpserver.HTTPServer(container)
http_server.listen(8888)
tornado.ioloop.IOLoop.current().start()

这个类旨在让其他框架(Django,webpy等)在Tornado HTTP服务器和I/O循环上运行。

tornado.web.FallbackHandler 类通常用于在同一服务器中混合Tornado和WSGI应用程序。有关完整示例,请参阅 https://github.com/bdarnell/django-tornado-demo

static environ(request)[源代码]

tornado.httputil.HTTPServerRequest 转换为WSGI环境。