Je tente d'exécuter une application de Python dans Apache (prefork) avec WSGI de telle sorte qu'un seul interpréteur Python sera utilisé. Ceci est nécessaire car l'application utilise la synchronisation des threads pour éviter les conditions de course de se produire. Depuis Apache prefork engendre de multiples processus, le code serpente pas être partagé entre les interprètes et ainsi la synchronisation du fil est hors de propos (chaque fil ne voit que sa propre serrures qui sont sans incidence sur les autres processus).
Voici la configuration:
- Apache 2.0 (prefork)
- WSGI
- 2,5 python
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>
Voici ce que j'ai essayé jusqu'à présent (dont aucun travaillé):
- Ajout WSGIApplicationGroup% {GLOBAL}
Spécification WSGIDaemonProcess et WSGIProcessGroup au sein de l'hôte virtuel:
WSGIDaemonProcess OSVM threads = 50
WSGIProcessGroup OSVM
Y at-il aucun moyen de forcer Apache prefork à utiliser un interpréteur Python unique avec WSGI? Les documents semblent indiquer que vous pouvez avec les options de WSGIDaemonProcess et WSGIApplicationGroup mais Apache crée encore un interpréteur Python pour chaque processus.