【问题标题】:How to serve Tornado with Django on waitress?如何在女服务员上为 Django 服务 Tornado?
【发布时间】:2020-06-18 02:13:15
【问题描述】:

我有这个用 django 函数包装的龙卷风应用程序作为 WSGI 应用程序(在 Windows 中使用)

from django.core.wsgi import get_wsgi_application
from django.conf import settings
from waitress import serve
settings.configure()

wsgi_app = tornado.wsgi.WSGIContainer(django.core.wsgi.WSGIHandler())
def tornado_app():  
    url = [(r"/models//predict", PHandler),
           (r"/models//explain", EHandler),
           ('.*', tornado.web.FallbackHandler, dict(fallback=wsgi_app))]
    return Application(url, db=ELASTIC_URL, debug=options.debug, autoreload=options.debug)

if __name__ == "__main__":
    application = tornado_app()
    http_server = HTTPServer(application)  
    http_server.listen(LISTEN_PORT)
    IOLoop.current().start() 

不知道如何使用女服务员, 为了使用服务员服务,我尝试了 http_server = serve(application),服务器正在启动,现在确定它是正确的,到达端点时出错

【问题讨论】:

    标签: python django tornado waitress


    【解决方案1】:

    waitress 是一个 WSGI 服务器; Tornado 不基于或不兼容 WSGI。您不能使用 waitress 为应用程序的 Tornado 部分提供服务。

    要在一个线程中同时为 Tornado 和 WSGI 应用程序提供服务,您需要像在原始示例中那样使用 Tornado 的 HTTPServer。为了获得更好的可扩展性,我建议将应用程序的 Tornado 和 Django 部分拆分为单独的进程,并在它们前面放置一个像 nginx 或 haproxy 这样的代理。

    【讨论】:

    猜你喜欢
    • 2017-03-17
    • 2014-05-14
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    相关资源
    最近更新 更多