我第一次尝试使用nssm在服务模式下(未登录)在microsoft webserver上部署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的示例。
我只将django用于mvc框架,但没有使用orm或auth。
我必须保留django,因为它有很多工作和microsoft webserver / nssm,因为它是我公司的最佳实践,但龙卷风能够帮助我吗?我正朝着正确的方向前进吗?
提前感谢那些花时间帮我解决这个问题的人。
答案 0 :(得分:0)
注意WSGIContainer
docs上的警告:龙卷风的WSGIContainer
没有并行性,几乎可以肯定是比gunicorn
或uwsgi
等其他WSGI服务器更糟糕的选择用于基于WSGI的应用程序。
@gen.coroutine
适用于原生Tornado应用程序;对于在WSGIContainer
内运行的外部应用程序,它没有任何有用的方式。
龙卷风的Windows支持也很有限。