Sto tentando di eseguire un'applicazione Python in Apache (prefork) con WSGI in modo tale che venga utilizzato un solo interprete Python. Ciò è necessario poiché l'applicazione utilizza la sincronizzazione dei thread per impedire che si verifichino condizioni di competizione. Poiché il prefork di Apache genera più processi, il codice finisce per non essere condiviso tra gli interpreti e quindi la sincronizzazione dei thread è irrilevante (cioè ogni thread vede solo i propri blocchi che non hanno alcun rapporto con gli altri processi).Interprete Python in Apache Prefork/WSGI
Qui è la messa a punto:
- Apache 2.0 (prefork)
- WSGI
- Python 2,5
Ecco la configurazione di Apache rilevanti:
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>
Qui è quello che ho provato finora (nessuno dei quali ch lavorato):
- calcolata WSGIApplicationGroup %{GLOBAL}
Specifica WSGIDaemonProcess e WSGIProcessGroup all'interno dell'ospite virtuale:
discussioni WSGIDaemonProcess osvm = 50
WSGIProcessGroup osvm
Is non c'è modo di forzare il prefork di Apache per utilizzare un singolo interprete Python con WSGI? I documenti sembrano implicare la possibilità con le opzioni WSGIDaemonProcess e WSGIApplicationGroup, ma Apache crea comunque un interprete Python separato per ogni processo.
Grazie, la tua risposta è stata perfetta. Ho avuto un paio di problemi che sono emersi una volta che ho creato il gruppo di processi demone; entrambi sono stati risolti con le informazioni che hai fornito sui gruppi di Google. In particolare, ho dovuto inserire le direttive Utente e Gruppo in precedenza nella configurazione di Apache (http://code.google.com/p/modwsgi/issues/detail?id=40) e impostare il WSGISocketPrefix. Grazie per il vostro aiuto. –