WSGI 是 Web 服務(wù)器的 Python 標(biāo)準(zhǔn),允許 Tornado 與其他 Python Web 框架和服務(wù)器之間的互操作性。
該模塊通過(guò) ?WSGIContainer
類(lèi)提供 WSGI 支持,這使得使用 Tornado HTTP 服務(wù)器上的其他 WSGI 框架運(yùn)行應(yīng)用程序成為可能。 不支持反向; Tornado ?Application
?和 ?RequestHandler
類(lèi)是為 Tornado ?HTTPServer
設(shè)計(jì)的,不能在通用 WSGI 容器中使用。
使 WSGI 兼容的函數(shù)可在 Tornado 的 HTTP 服務(wù)器上運(yùn)行。
注意:
WSGI 是一個(gè)同步接口,而 Tornado 的并發(fā)模型是基于單線程異步執(zhí)行的。 這意味著使用 Tornado 的 ?WSGIContainer
運(yùn)行 WSGI 應(yīng)用程序的可擴(kuò)展性低于在多線程 WSGI 服務(wù)器(如 ?gunicorn
或 ?uwsgi
?)中運(yùn)行相同的應(yīng)用程序。 僅當(dāng)在同一進(jìn)程中組合 Tornado 和 WSGI 的好處大于降低的可伸縮性時(shí),才使用 ?WSGIContainer
?。
在 ?WSGIContainer
中包裝一個(gè) WSGI 函數(shù)并將其傳遞給 ?HTTPServer
以運(yùn)行它。 例如:
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()
此類(lèi)旨在讓其他框架(Django、web.py 等)在 Tornado HTTP 服務(wù)器和 I/O 循環(huán)上運(yùn)行。
?tornado.web.FallbackHandler
? 類(lèi)通常對(duì)于在同一服務(wù)器中混合 Tornado 和 WSGI 應(yīng)用程序很有用。
將 ?tornado.httputil.HTTPServerRequest
? 轉(zhuǎn)換為 WSGI 環(huán)境。
更多建議: