我试图在Apache(prefork)中使用WSGI运行Python应用程序,以便使用单个Python解释器.这是必要的,因为应用程序使用线程同步来防止发生竞争条件.由于Apache prefork产生了多个进程,因此代码最终不会在解释器之间共享,因此线程同步是无关紧要的(即每个线程只看到它自己的锁,这与其他进程没有关系).
这是设置:
以下是相关的Apache配置:
WSGIApplicationGroup %{GLOBAL}
<VirtualHost _default_:80>
WSGIScriptAlias / /var/convergedsecurity/apache/osvm.wsgi
Alias /admin_media/ /var/www/html/admin_media/
<Directory /var/www/html/admin_media>
Order deny,allow
Allow from all
</Directory>
Alias /media/ /var/www/html/media/
<Directory /var/www/html/media>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所尝试的(没有一个工作):
在虚拟主机中指定WSGIDaemonProcess和WSGIProcessGroup:
WSGIDaemonProcess osvm threads = 50
WSGIProcessGroup osvm
有没有办法强制Apache prefork使用WSGI的单个Python解释器?这些文档似乎暗示您可以使用WSGIDaemonProcess和WSGIApplicationGroup选项,但Apache仍然为每个进程创建一个单独的Python解释器.