在apache + mod_wsgi下运行subprocess.Popen总是返回一个错误,返回码为-6

时间:2011-12-13 18:35:07

标签: python django apache mod-wsgi django-compressor

我希望有人看到这个 -

我正在运行django-compressor,利用lessc设置来渲染/压缩文件中的CSS。它在从开发服务器调用时非常有效,但是当在apache + mod_wsgi下运行时,它始终返回错误。

为了调试这个,我运行了过滤器调用的确切命令作为www-data用户(在WSGIDaemonProcess指令中被定义为wsgi用户)并验证它是否正常工作,包括读写权限它正在操纵的文件。

我还攻击了该系统上压缩器/ filters / base.py中的django压缩器代码,似乎尝试调用的任何命令在proc.communicate()调用后得到的返回码为-6

我希望有人以前见过这个 - 或者它会响一些铃声。它在apache + mod_wsgi进程之外的这台机器上工作正常(即作为开发服务器运行进程)。我只是不清楚可能阻塞subprocess.Popen()调用的内容。

1 个答案:

答案 0 :(得分:8)

您是偶然使用Python 2.7.2吗?

该版本的Python引入了一个错误,导致子解释器中的fork()失败:

http://bugs.python.org/issue13156

您必须通过设置:

强制WSGI应用程序在该过程的主Python解释器中运行
WSGIApplicationGroup %{GLOBAL}

如果运行多个Django应用程序,您需要确保只有受影响的应用程序应用此配置指令,否则您将导致所有Django应用程序在一个解释器中运行,由于Django配置的工作方式,这是不可能的。