【发布时间】:2023-12-31 02:52:01
【问题描述】:
我的 Apache 有 2 个虚拟主机,每个都有一个使用 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 解释器......但我不太了解所有这些东西,所以我在这里问。
【问题讨论】: