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

问题描述 投票:0回答:1

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

processes=n threads=1是为WSGIDaemonProcess设置我的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列表的垃圾邮件)。

tornado mod-wsgi
1个回答
1
投票

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

请注意,tornado.httpclient.HTTPClient对象不是线程安全的,因此您需要在其周围放置一个锁或者为每个线程使用单独的对象。

© www.soinside.com 2019 - 2024. All rights reserved.