mod_wsgi daemon-Modus, WSGIApplicationGroup und Python-interpreter Trennung
Ich habe Apache mit 2 virtuellen hosts, jeder mit einer Django-site angebracht mit mod_wsgi, daemon-Modus, wie diese:
<VirtualHost 123.123.123.123:80>
WSGIDaemonProcess a.com user=x group=x processes=5 threads=1
WSGIProcessGroup a.com
WSGIApplicationGroup %{GLOBAL}
</VirtualHost>
<VirtualHost 123.123.123.123:80>
WSGIDaemonProcess b.com user=x group=x processes=5 threads=1
WSGIProcessGroup b.com
WSGIApplicationGroup %{GLOBAL}
</VirtualHost>
Benutze ich WSGIApplicationGroup %{GLOBAL}
weil ein bekanntes problem mit Xapian.
Nun, wenn ich verstehe, was passiert hinter den kulissen, mod_wsgi startet 5-daemon-Prozesse für jede meiner Websites. Ich kann sehen, dass dies im Apache-log:
[info] mod_wsgi (pid=8106): Attach interpreter ''.
[info] mod_wsgi (pid=8106): Adding '.../lib/python2.5/site-packages' to path.
[info] mod_wsgi (pid=8106): Enable monitor thread in process 'a.com'.
[info] mod_wsgi (pid=8106): Enable deadlock thread in process 'a.com'.
[info] mod_wsgi (pid=8107): Attach interpreter ''.
[info] mod_wsgi (pid=8107): Adding '.../lib/python2.5/site-packages' to path.
[info] mod_wsgi (pid=8107): Enable monitor thread in process 'a.com'.
[info] mod_wsgi (pid=8107): Enable deadlock thread in process 'a.com'.
...
Was ich nicht verstehe, ist, wenn diese "Attach interpreter ''"
Linien zeigen, dass alle diese Prozesse teilen sich die gleichen Python-interpreter, oder wenn es einen interpreter pro Prozess. (BTW merke ich, dass der leer-interpreter-name " ist verursacht durch vorbeifahrende %{GLOBAL}
zu WSGIApplicationGroup
).
Ich habe versucht, die Kontrolle, ob vielleicht sys.path
Einträge kumuliert in die nachfolgenden Prozesse, aber Sie nicht - was darauf hindeuten könnte, dass es eine separate Python-interpreter für jedes der 5-daemon-Prozesse... aber ich verstehe nicht ganz, alle diese Dinge, so Frage ich hier.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den " pid " - Wert ist anders. Sie sind in unterschiedlichen Prozessen.
WSGIApplicationGroup MyOwnInterpreter
- es werden zwei Dolmetscher pro Prozess, %{GLOBAL} und MyOwnInterpreter, oder nur noch einer, aber mit einem Namen anstelle von "?