我希望有人看到这个 -
我正在运行 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 配置的工作方式,这是不可能的。
关于python - 在 apache+mod_wsgi 下运行 subprocess.Popen 总是返回一个返回码为 -6 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8494335/