我有2个虚拟主机的Apache,每个虚拟主机都有一个使用mod_wsgi,守护进程模式附加的Django站点,如下所示:
<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>
由于a known problem with Xapian,我使用WSGIApplicationGroup %{GLOBAL}
。
现在,如果我了解幕后发生的事情,mod_wsgi会为每个站点启动5个守护程序进程。我可以在Apache日志中看到这一点:
[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'.
...
我不明白的是,这些"Attach interpreter ''"
行是否表明所有这些进程共享相同的Python解释器,或者每个进程是否有一个解释器。 (顺便说一下,我意识到空翻译名称''是由%{GLOBAL}
传递给WSGIApplicationGroup
)。
我尝试检查后续进程中是否累积了sys.path
条目,但它们没有 - 这可能表明5个守护程序进程中每个进程都有一个单独的Python解释器......但我并不完全了解所有这些事情,所以我在这里问。
答案 0 :(得分:6)
'pid'值不同。它们处于不同的过程中。