在apache + mod_wsgi下运行subprocess.Popen始终返回错误,返回码为-6
问题内容:
我希望有人看到过-
我正在运行django-
compressor,利用lessc设置来将less渲染/压缩到文件上的CSS中。从开发服务器调用时,它可以完美工作,但是在apache +
mod_wsgi下运行时,它始终返回错误。
为了进行调试,我已经运行了确切的命令,即过滤器是以www-
data用户(在WSGIDaemonProcess指令中定义为wsgi用户)调用的,并验证了它是否可以正常工作,包括读取和写入文件的权限。它正在操纵。
我也对该系统上compressor / filters / base.py中的django-
compressor代码进行了修改,并且似乎任何试图被调用的命令在proc.communicate()调用之后都得到了-6的返回码。
我希望有人以前见过这个-或它会响起一些钟声。在apache +
mod_wsgi进程之外的该机器上(在作为开发服务器运行该进程),它也可以正常工作。我只是不清楚什么可能阻止subprocess.Popen()调用。
问题答案:
您是否偶然使用Python 2.7.2?
该版本的Python引入了一个错误,该错误导致子解释器中的fork()失败:
http://bugs.python.org/issue13156
您必须通过设置以下命令来强制WSGI应用程序在该过程的主要Python解释器中运行:
WSGIApplicationGroup %{GLOBAL}
如果运行多个Django应用程序,则需要确保只有一个受影响的应用了此配置指令,否则您将导致所有Django应用程序都在一个解释器中运行,这由于Django配置的工作方式而无法实现。