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

标签 python django apache mod-wsgi django-compressor

我希望有人看到这个 -

我正在运行 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/

相关文章:

jQuery 主题模仿 Django 管理界面风格(使用 CSS)

apache - 启动时 Apache Tomcat 中的 PS Permgen 为 98%

apache - .htaccess 允许 https 非 www,仅在 http 上强制 www

python - 相关模型上的django rest framework过滤器

mysql - 如何创建临时表而不丢失 Django 中的 ORM?

apache - .htaccess 从子目录重写到根目录

python - 属性错误: 'RequestContext' object has no attribute 'user'

python - Flask - Flask-Admin - 一对多 - 级联

python - 如何在不复制的情况下重试 celery 任务 - SQS

python - 在 Windows 中运行/调试 python 程序的最简洁方法