Ich versuche, eine Python-Anwendung in Apache (Prefork) mit WSGI in einer solchen Weise auszuführen, dass ein einzelner Python-Interpreter verwendet wird. Dies ist erforderlich, da die Anwendung eine Thread-Synchronisierung verwendet, um zu verhindern, dass Racebedingungen auftreten. Da Apache Prefork mehrere Prozesse erzeugt, wird der Code nicht zwischen den Interpretern geteilt, und somit ist die Thread-Synchronisation irrelevant (d. H. Jeder Thread sieht nur seine eigenen Sperren, die keinen Einfluss auf die anderen Prozesse haben). HierShare Python Interpreter in Apache Prefork/WSGI
ist die Setup:
- Apache 2.0 (Prefork)
- WSGI
- Python 2,5
Hier ist der relevante Apache Konfiguration:
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>
Hier ist das was ich bisher probiert habe (keines von denen ch gearbeitet):
- WSGIApplicationGroup %{GLOBAL}
Angeben WSGIDaemonProcess und WSGIProcessGroup Hinzufügen innerhalb des virtuellen Host:
WSGIDaemonProcess OSVM threads = 50
WSGIProcessGroup OSVM
Ist Es gibt keinen Weg dazu Erzwingen Apache Prefork, um einen einzelnen Python-Interpreter mit WSGI zu verwenden? Die Dokumente scheinen zu implizieren, dass Sie mit den WSGIDaemonProcess- und WSGIApplicationGroup-Optionen arbeiten können, aber Apache erstellt immer noch einen separaten Python-Interpreter für jeden Prozess.
Vielen Dank, Ihre Antwort war perfekt. Ich hatte ein paar Probleme, die auftraten, sobald ich die Daemon-Prozessgruppe eingerichtet hatte. Beide wurden mit Informationen gelöst, die Sie in Google-Gruppen angegeben haben. Insbesondere musste ich die Benutzer- und Gruppendirektiven früher in die Apache-Konfiguration (http://code.google.com/p/modwsgi/issues/detail?id=40) und setzen Sie das WSGISocketPrefix. Vielen Dank für Ihre Hilfe. –