8

我希望有人看到这个-

我正在运行 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() 调用的原因。

4

1 回答 1

8

您是否偶然使用 Python 2.7.2?

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

http://bugs.python.org/issue13156

您必须通过设置强制 WSGI 应用程序在进程的主要 Python 解释器中运行:

WSGIApplicationGroup %{GLOBAL}

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

于 2011-12-13T22:50:10.257 回答