如何添加世代.Tornado Web服务器中的任务模块为django后端运行,以允许多个异步请求



我第一次尝试使用nssm在服务模式下(无需登录)在Microsoft Web服务器上部署django网站。

为此,我似乎不能使用通常的

python manage.py runserver 0.0.0.0

所以我尝试在我的项目中添加一个新的 tornado.py 文件,nssm 会指向它:

from tornado.wsgi import WSGIContainer
from tornado.ioloop import IOLoop
from tornado.web import FallbackHandler, RequestHandler, Application, StaticFileHandler
from wsgi import application
from mySite.settings import *

class MainHandler(RequestHandler):
def get(self):
self.write("Hi Tornado")
tr = WSGIContainer(application)
app = Application([
(r"/tornado", MainHandler), 
(r"/static/(.*)", StaticFileHandler, {'path': STATIC_ROOT}), 
(r"/media/(.*)", StaticFileHandler, {'path': MEDIA_ROOT}),     
(r".*", FallbackHandler, dict(tr)),     
])

if __name__ == '__main__':
app.listen(8000)
IOLoop.instance().start()

指向此文件的 nssm 使部署正常,但不幸的是,我有一些长请求调用后端 django 中的其他 API,当我调用其中一个长服务时,不可能发出其他请求,即我必须等待第一个请求完成。

根据我在这个网站上看到的与同一问题相关的其他问题,我需要以某种方式在下面添加龙卷风装饰器:

@gen

我已经尝试了几个选项但没有成功,并且找不到使用 django 的示例。

我只在 mvc 框架中使用 django,但没有使用 orm 或 auth。

我将不得不保留django,因为它有很多工作和Microsoft Webserver/nssm,因为它是我公司的最佳实践,但是龙卷风能够在这方面帮助我吗?我看对了方向吗?

提前感谢所有花时间帮助我解决这个问题的人。

请注意WSGIContainer文档中的警告:Tornado 的WSGIContainer没有并行性,几乎可以肯定是比其他 WSGI 服务器(如基于 WSGI 的应用程序的gunicornuwsgi)更糟糕的选择。

@gen.coroutine适用于本机Tornado应用程序; 对于在WSGIContainer内运行的外部应用程序,它没有任何有用的方式。

Tornado的Windows支持也很有限。

最新更新