Je tente d'exécuter une application Python dans Apache (prefork) avec WSGI de telle sorte qu'un seul interpréteur Python sera utilisé. Cela est nécessaire car l'application utilise la synchronisation des threads pour empêcher les conditions de course. Puisque Apache prefork engendre plusieurs processus, le code finit par ne pas être partagé entre les interprètes et donc la synchronisation des threads est non pertinente (à savoir que chaque thread ne voit que ses propres verrous qui n'ont aucune incidence sur les autres processus).Partager l'interpréteur Python dans Apache Prefork/WSGI
Voici la configuration:
- Apache 2.0 (prefork)
- WSGI
- python 2,5
Voici la configuration Apache pertinente:
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>
Ici est ce que j'ai essayé jusqu'ici (aucun de ch travaillée):
- Ajout WSGIApplicationGroup %{GLOBAL}
Spécification WSGIDaemonProcess et WSGIProcessGroup au sein de l'hôte virtuel:
fils WSGIDaemonProcess de OSVM = 50
WSGIProcessGroup OSVM
Est il n'y a aucun moyen de forcer Apache prefork à utiliser un seul interpréteur Python avec WSGI? Les documents semblent impliquer que vous pouvez avec les options WSGIDaemonProcess et WSGIApplicationGroup mais Apache crée toujours un interpréteur Python distinct pour chaque processus.
Merci, votre réponse était parfaite. J'ai eu quelques problèmes qui se sont posés une fois que j'ai eu le groupe de processus de démon mis en place; les deux ont été résolus avec les informations que vous avez fournies sur les groupes Google. Plus précisément, j'ai dû mettre les directives User et Group plus tôt dans la configuration Apache (http://code.google.com/p/modwsgi/issues/detail?id=40) et définir le WSGISocketPrefix. Nous vous remercions de votre aide. –