使用WSGI + Apache mpm-worker的Pythons子进程:IOError 4

时间:2011-12-30 11:18:21

标签: python apache subprocess wsgi worker

我在这里遇到一个奇怪的问题,我无法通过搜索网络找出解决方案:/

将Apache从mpm-prefork切换到mpm-worker后,在我的(Django)Python WSGI应用程序中使用子进程在挂起几次后引发以下异常:

IOError at /
[Errno 4] Interrupted system call

有问题的电话是:

out = check_output(['sudo', 'quota', user_id])

当我使用Debian Squeeze存储库中的Python 2.6时,check_output是Python 2.7中此函数的后端。

事实上,这些过程似乎已被执行,但却死了:

ps aux | grep quota
root     15378  0.0  0.0  21864  1176 ?        S    02:34   0:00 sudo quota ...SOME_ID...
root     15379  0.0  0.0      0     0 ?        Z    02:34   0:00 [quota] <defunct>

Apache配置只不过是设置WSGIScriptAlias和一些目录指令。

我错过了明显的吗?

电贺 塞巴斯蒂安

解决方案: 原来是Debian 6附带的sudo 1.7.4-4中的bug。通过从主页安装最新的1.8.x .deb解决。

1 个答案:

答案 0 :(得分:0)

Python 2.7.2中有一个错误导致子解释器中的fork失败。尝试设置:

WSGIApplicationGroup %{GLOBAL}

在该WSGI应用程序的Apache配置中,强制使用主解释器。

潜在问题的Python错误报告是:

http://bugs.python.org/issue13156