我第一次尝试使用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 的应用程序的gunicorn
或uwsgi
)更糟糕的选择。
该@gen.coroutine
适用于本机Tornado应用程序; 对于在WSGIContainer
内运行的外部应用程序,它没有任何有用的方式。
Tornado的Windows支持也很有限。