1

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

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

IOError at /
[Errno 4] Interrupted system call

有问题的电话是:

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

其中 check_output 是 Python 2.7 中此函数的反向移植,而我使用的是 Debian Squeeze 存储库中的 Python 2.6。

实际上,这些进程似乎被执行了,但是却死了:

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中的一个错误。通过从他们的主页安装最新的 1.8.x .deb 来解决。

4

1 回答 1

0

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

WSGIApplicationGroup %{GLOBAL}

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

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

http://bugs.python.org/issue13156

于 2011-12-30T21:21:51.600 回答