Tornado 與其他Python框架和服務(wù)器的互操作性

2022-03-11 09:19 更新

WSGI 是 Web 服務(wù)器的 Python 標(biāo)準(zhǔn),允許 Tornado 與其他 Python Web 框架和服務(wù)器之間的互操作性。

該模塊通過(guò) ?WSGIContainer類提供 WSGI 支持,這使得使用 Tornado HTTP 服務(wù)器上的其他 WSGI 框架運(yùn)行應(yīng)用程序成為可能。 不支持反向; Tornado ?Application?和 ?RequestHandler類是為 Tornado ?HTTPServer設(shè)計(jì)的,不能在通用 WSGI 容器中使用。

class tornado.wsgi.WSGIContainer(wsgi_application: WSGIAppType)

使 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()

此類旨在讓其他框架(Django、web.py 等)在 Tornado HTTP 服務(wù)器和 I/O 循環(huán)上運(yùn)行。

?tornado.web.FallbackHandler? 類通常對(duì)于在同一服務(wù)器中混合 Tornado 和 WSGI 應(yīng)用程序很有用。

static environ(request: tornado.httputil.HTTPServerRequest) → Dict[str, Any]

將 ?tornado.httputil.HTTPServerRequest? 轉(zhuǎn)換為 WSGI 環(huán)境。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)