我試圖用WSGI在Apache(prefork)中運行Python應用程序,以便使用單個Python解釋器。這是必要的,因爲應用程序使用線程同步來防止競爭條件的發生。由於Apache prefork衍生出多個進程,因此代碼不會在解釋器之間共享,因此線程同步無關緊要(即每個線程只能看到自己的鎖,而這些鎖對其他進程沒有影響)。在Apache Prefork/WSGI中共享Python解釋器
這裏是設置:
- 阿帕奇2.0(prefork)的
- WSGI
- Python 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>
這裏是我到目前爲止嘗試過的(沒有whi CH工作):
- 添加WSGIApplicationGroup %{GLOBAL}
虛擬主機內指定WSGIDaemonProcess和WSGIProcessGroup:
WSGIDaemonProcess OSVM線程= 50
WSGIProcessGroup OSVM
是沒有辦法強制Apache prefork在WSGI中使用單個Python解釋器?這些文檔似乎意味着您可以使用WSGIDaemonProcess和WSGIApplicationGroup選項,但是Apache仍然爲每個進程創建一個單獨的Python解釋器。
謝謝你,你的回答是完美的。一旦我建立了守護進程組,我就遇到了幾個問題;兩者都是通過您在Google小組上提供的信息解決的。 具體來說,我必須在Apache配置(http://code.google.com/p/modwsgi/issues/detail?id=40)中提前提供User和Group指令並設置WSGISocketPrefix。 謝謝你的幫助。 – 2009-08-27 19:27:01