用于运行Tornado WSGIAdapter应用程序的名义mod_wsgi WSGIDaemonProcess配置是什么?

时间:2017-12-22 00:04:08

标签: tornado mod-wsgi

我正在使用Tornado Web框架,但我的部署环境之一是prefork Apache 2上的mod_wsgi(奇怪的托管要求)。

processes=n threads=1WSGIDaemonProcess设置tornado.wsgi.WSGIAdapter的正确方法吗?我自己的代码应该是线程安全的,但是,我将SQLAlchemy Session()绑定到处理程序的tornado.web.RequestHandler.prepare()的实例here(我显然没有在WSGI中使用协同程序 - 模式)。我也在一些请求处理程序中使用阻塞tornado.httpclient.HTTPClient

此外,WSGIDaemonProcess处理fork()与tornado.httpserver.HTTPServer().start(n)相比吗?

(我在这里发布这个问题,因为我不知道如何同时询问@Ben Darnell和@Graham Dumpleton而不发送龙卷风和mod_wsgi列表的垃圾邮件)。

1 个答案:

答案 0 :(得分:1)

WSGIAdapter 是线程安全的,Tornado的子集也是如此(RequestHandler.write,例如,与{{WSGIAdapter一起使用时是线程安全的1}},但不适用于IOLoop)。因此,当使用WSGIAdapter运行时,您可以像对待任何其他WSGI框架一样配置WSGI服务器(通常类似于每个CPU核心1个进程(这与您使用HTTPServer.start(n)的内容相当) )每个进程有5-10个线程,具体取决于你在I / O上花费的时间。)

请注意tornado.httpclient.HTTPClient个对象是线程安全的,因此您需要对其进行锁定或对每个线程使用单独的对象。