安装scipy后无响应的apache + mod_wsgi

Modified on: Sun, 25 Aug 2019 00:20:03 +0800

我目前正在运行Centos 6.4服务器,Apache 2.2.15和mod_wsgi 3.2。服务器托管一个基于django的站点(django 1.5.1,python 2.6.6)。一切都运行正常,直到我通过pip安装了scipy 0.12.0。现在,当我尝试加载django应用程序时,服务器没有响应,并且看起来生成的子httpd进程挂起。查看我的日志(/ var / logs / httpd / error_log,我的vhost error.log和我的系统日志)不会产生任何错误。

如果我通过django manage.py shell加载我的模型等,一切正常,这让我相信它是一个mod_wsgi问题。

有关如何开始排除故障的任何想法?

作者:MarkD

最佳答案

Python的一些使用C扩展模块的第三方软件包,包括scipy和numpy,只能在Python主解释器中使用,不能在子解释器中使用,因为默认使用mod_wsgi。结果可能是线程死锁,不正确的行为或进程崩溃。详情请见:

http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API一>

解决方法是使用以下方法强制WSGI应用程序在进程的主解释器中运行:

WSGIApplicationGroup %{GLOBAL}

如果在同一服务器上运行多个WSGI应用程序,您可能希望开始使用守护程序模式进行调查,因为某些框架不允许多个实例在同一个解释器中运行。 Django就属于这种情况。因此,使用守护进程模式,使每个进程都在自己的进程中,并强制每个进程在其各自的守护进程模式进程组的主解释器中运行。


相关问答

添加新评论