Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pythons子进程与WSGI+;Apache mpm工作程序:IOError 4_Python_Apache_Subprocess_Wsgi_Worker - Fatal编程技术网

Pythons子进程与WSGI+;Apache mpm工作程序:IOError 4

Pythons子进程与WSGI+;Apache mpm工作程序:IOError 4,python,apache,subprocess,wsgi,worker,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]) 其中check_输出是Python 2.7中此函数的一个后端口,而我

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

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

IOError at /
[Errno 4] Interrupted system call
问题是:

out = check_output(['sudo', 'quota', user_id])
其中check_输出是Python 2.7中此函数的一个后端口,而我使用的是Debian存储库中的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>
ps辅助| grep配额
根15378 0.0 0.0 21864 1176?S 02:34 0:00 sudo配额…一些ID。。。
根153790.0.0?Z 02:34 0:00[配额]
Apache配置只不过是设置WSGIScriptAlias和一些目录指令

我是否错过了显而易见的事情

问候 塞巴斯蒂安

解决方案:
结果证明是Debian 6附带的sudo 1.7.4-4中的一个。通过从他们的主页安装最新的1.8.x.deb解决了这个问题。

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

WSGIApplicationGroup %{GLOBAL}
在该WSGI应用程序的Apache配置中,强制使用主解释器

底层问题的Python错误报告如下:


是的,我在中看到了您的答案,但正如我所说,我正在运行Python 2.6。我之前考虑过这个解决方案,但这不会影响我的应用程序的性能吗?它解决了2.6中的问题吗?好的,在我快速浏览的问题中,我看到了Python 2.7,并错误地假设了:-)顺便说一句,你试过用一个比sudo更简单的命令吗。例如“/bin/echo hi”。注意,确定是否有任何子流程执行失败,或者是否可能与sudo访问东西和做特殊事情的需求有关。此外,还需要了解如果安装了SELinux,您是否可以在系统上启用它。事实上,它使用一个更简单的命令来工作,如['echo','hello']。它还可以在未安装配额的第二个虚拟机上工作,因此调用失败。如果我在不使用sudo的情况下使用['quota',user_id],它也可以工作。您是否设置了sudoers配置文件,以允许应用程序在Apache下运行的用户将sudo用于该命令?