gpt4 book ai didi

python - Popen 不再适用于 apache/wsgi 和 python 2.7.2?

转载 作者:太空狗 更新时间:2023-10-29 20:11:35 27 4
gpt4 key购买 nike

我的 django 应用程序曾经使用 python subprocess.Popen 制作一些 shell 命令,因为我将 ubuntu 升级到 11.10 后不再工作

为了简化问题,我将错误的代码放入 wsgi 脚本中:

import os
import sys

from subprocess import Popen,PIPE
p=Popen(['/usr/bin/id'],stdout=PIPE,stderr=PIPE)
comm=p.communicate()
print comm,p.returncode

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

如果我直接用 python 运行这段代码,它会起作用:

$ python -V
Python 2.7.2+
$ python django_wsgi.py
('uid=1002(www) gid=1002(www) groups=1002(www)\n', '') 0

如果我通过 apache 运行此代码(我只是将相关的 URL 放入浏览器),在 apache 日志中,我得到:

[Tue Nov 29 11:34:38 2011] [error] ('', '') -6

这个错误“-6”是什么???

问题是我的开发服务器(Ubuntu 10.04,几乎相同的 apache/wsgi 版本,相同的 apache 配置文件,相同的环境变量,但使用 python 2.6.5)运行良好:

[Tue Nov 29 11:29:10 2011] [error] ('uid=1000(www) gid=1000(www) groups=1000(www)\\n', '') 0

你知道为什么 Popen 不再通过 apache 与 python 2.7 一起工作吗?

最佳答案

因为最新的 Python 2.7 有一个错误,导致子解释器中的 fork run 失败。

http://bugs.python.org/issue13156

假设只托管一个 WSGI 应用程序,通过添加到 Apache 配置强制使用主解释器而不是子解释器:

WSGIApplicationGroup %{GLOBAL}

关于python - Popen 不再适用于 apache/wsgi 和 python 2.7.2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8309465/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com