Tornado 与其他Python框架和服务器的互操作性
WSGI 是 Web 服务器的 Python 标准,允许 Tornado 与其他 Python Web 框架和服务器之间的互操作性。
该模块通过 WSGIContainer
类提供 WSGI 支持,这使得使用 Tornado HTTP 服务器上的其他 WSGI 框架运行应用程序成为可能。 不支持反向; Tornado Application
和 RequestHandler
类是为 Tornado HTTPServer
设计的,不能在通用 WSGI 容器中使用。
class tornado.wsgi.WSGIContainer(wsgi_application: WSGIAppType)
使 WSGI 兼容的函数可在 Tornado 的 HTTP 服务器上运行。
注意:
WSGI 是一个同步接口,而 Tornado 的并发模型是基于单线程异步执行的。 这意味着使用 Tornado 的 WSGIContainer
运行 WSGI 应用程序的可扩展性低于在多线程 WSGI 服务器(如 gunicorn
或 uwsgi
)中运行相同的应用程序。 仅当在同一进程中组合 Tornado 和 WSGI 的好处大于降低的可伸缩性时,才使用 WSGIContainer
。
在 WSGIContainer
中包装一个 WSGI 函数并将其传递给 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、web.py 等)在 Tornado HTTP 服务器和 I/O 循环上运行。
tornado.web.FallbackHandler
类通常对于在同一服务器中混合 Tornado 和 WSGI 应用程序很有用。
static environ(request: tornado.httputil.HTTPServerRequest) → Dict[str, Any]
将 tornado.httputil.HTTPServerRequest
转换为 WSGI 环境。