Próbuję uruchomić aplikację Python w Apache (prefork) z WSGI w taki sposób, że zostanie użyty pojedynczy interpreter Pythona. Jest to konieczne, ponieważ aplikacja używa synchronizacji wątków, aby zapobiec występowaniu warunków wyścigu. Ponieważ prefekt Apache spawnuje wiele procesów, kod nie jest dzielony między interpreterami, a zatem synchronizacja nici jest nieistotna (tj. Każdy wątek widzi tylko własne blokady, które nie mają wpływu na inne procesy).Python Interpreter Share w Apache Prefork/WSGI
Oto konfiguracji:
- Apache 2.0 (prefork)
- WSGI
- Pythona 2,5
Tutaj odpowiedni konfiguracyjne apache'a:
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>
tutaj jest to, co próbowałem do tej pory (żaden z whi CH pracował)
- Dodawanie WSGIApplicationGroup %{GLOBAL}
Określanie WSGIDaemonProcess i WSGIProcessGroup w wirtualnego hosta:
WSGIDaemonProcess osvm nici = 50
WSGIProcessGroup osvm
Is nie ma sposobu zmusić Apache Prefork do korzystania z jednego interpretera Pythona z WSGI? Dokumenty sugerują, że możesz z opcjami WSGIDaemonProcess i WSGIApplicationGroup, ale Apache nadal tworzy osobny interpreter języka Python dla każdego procesu.
Dziękuję, twoja odpowiedź była idealna. Miałem kilka problemów, które pojawiły się po skonfigurowaniu grupy demona; oba zostały rozwiązane dzięki informacjom podanym w grupach Google. W szczególności musiałem wcześniej wprowadzić dyrektywy użytkownika i grupy w konfiguracji Apache (http://code.google.com/p/modwsgi/issues/detail?id=40) i ustawić WSGISocketPrefix. Dziękuję za pomoc. –