Estoy intentando ejecutar una aplicación de Python dentro de Apache (prefork) con WSGI de tal manera que se utilizará un solo intérprete de Python. Esto es necesario ya que la aplicación utiliza sincronización de subprocesos para evitar que ocurran condiciones de carrera. Como el prefork de Apache genera múltiples procesos, el código termina siendo no compartido entre los intérpretes y, por lo tanto, la sincronización del subproceso es irrelevante (es decir, cada subproceso solo ve sus propios bloqueos que no tienen relación con los otros procesos).Compartir Python Intérprete en Apache Prefork/WSGI
Aquí es la configuración:
- Apache 2,0 (prefork)
- WSGI
- Python 2,5
Aquí es la configuración relevante 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>
Aquí es lo que intenté hasta ahora (ninguno de whi ch trabajó):
- Adición de WSGIApplicationGroup %{GLOBAL}
Especificación WSGIDaemonProcess y WSGIProcessGroup dentro del huésped virtual:
hilos WSGIDaemonProcess osvm = 50
WSGIProcessGroup osvm
Es no hay forma de ¿obligar a Apache prefork a usar un solo intérprete de Python con WSGI? Los documentos parecen implicar que puede hacerlo con las opciones WSGIDaemonProcess y WSGIApplicationGroup pero Apache aún crea un intérprete de Python separado para cada proceso.
Gracias, su respuesta fue perfecta. Tuve un par de problemas que surgieron una vez que configuré el grupo de procesos de daemon; ambos se resolvieron con la información que proporcionó en los grupos de Google. Específicamente, tuve que colocar las directivas de Usuario y Grupo anteriormente en la configuración de Apache (http://code.google.com/p/modwsgi/issues/detail?id=40) y configurar WSGISocketPrefix. Gracias por su ayuda. –