我正在尝试使用 WSGI 在 Apache(prefork)中运行 Python 应用程序,以便使用单个 Python 解释器。这是必要的,因为应用程序使用线程同步来防止发生竞争条件。由于 Apache prefork 产生多个进程,代码最终不会在解释器之间共享,因此线程同步是无关紧要的(即每个线程只看到它自己的锁,而与其他进程无关)。
这是设置:
- Apache 2.0(前叉)
- WSGI
- 蟒蛇2.5
以下是相关的 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>
这是我迄今为止尝试过的(都没有奏效):
- 添加WSGIApplicationGroup %{GLOBAL}
在虚拟主机中指定WSGIDaemonProcess和WSGIProcessGroup :
WSGIDaemonProcess osvm 线程=50
WSGIProcessGroup osvm
有没有办法强制 Apache prefork 使用带有 WSGI 的单个 Python 解释器?这些文档似乎暗示您可以使用 WSGIDaemonProcess 和 WSGIApplicationGroup 选项,但 Apache 仍然为每个进程创建一个单独的 Python 解释器。