当前位置: 首页 > 面试题库 >

Popen在apache / wsgi和python 2.7.2中不再起作用了吗?

全誉
2023-03-14
问题内容

我的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在python 2.7中不再能通过Apache工作吗?


问题答案:

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

http://bugs.python.org/issue13156

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

WSGIApplicationGroup %{GLOBAL}


 类似资料:
  • 问题内容: 到目前为止,我使用的是2.45.0版本的selenium,所有等待都以这种方式完成: 但是我将selenium更新为3.1.0,但出现错误: “类型FluentWait中的直到(Predicate)方法不适用于参数(ExpectedCondition)” 我看到从2.45.0到3.1.0不再支持某些功能。我正在尝试研究什么是现在最好的方法,但是我不确定。我在Google上找到的大多数内

  • 我的目标是运行一个Java Ignite节点,并连接一个。NET客户机。由于我遇到了一些问题,我使用了一个更简单的例子,不是服务器/客户机模型,而是服务器/服务器模型。在Ignite2.0之前,您可以在Java端设置BinaryConfiguration,如下所示: 这在以下示例项目中有效:https://ptupitsyn.github.io/ignite-multi-platform-clus

  • 问题内容: 我正在编写一个执行scala命令的小型python应用程序。用户可以通过STDIN插入命令,然后python应用将其转发到scala解释器。执行命令后,应用程序将显示操作结果。 这个想法是用来创建一个管道,通过该管道我可以发送命令并读取结果。这个想法很简单,但是没有用。我不明白的是,为什么在打开管道后它们不再起作用。这使得无法在python中读取命令。 这是我正在使用的代码: 问题答案

  • 问题内容: 我在看这个问题。 就我而言,我想做一个: 现在,我可以在命令行中检查“ ls文件夹/*.txt”的工作原理,因为该文件夹包含许多.txt文件。 但是在Python(2.6)中,我得到了: ls:无法访问*:没有此类文件或目录 我尝试做: 和其他变体,但似乎根本不喜欢角色。 还有其他逃生方法吗? 问题答案: 被您的外壳自动展开。如果您引用,则不起作用: 如果要获取与模式匹配的文件,请使用

  • 问题内容: 我正在Linux Ubuntu Natty Narwhal中运行带有Tomcat 7.0.12的Eclipse Helios Service Release 1。 我一直很高兴地重新部署我的Web应用程序,直到它毫无理由地停止工作为止。显示以下异常: 在“ 服务器” 选项卡中,“本地主机上的Tomcat v7.0服务器[已启动,已同步] 我的项目显示为Tomcat v7.0 Serve

  • 问题内容: 我正在运行用于Firefox的Selenium Webdriver(最新版本)。每次开始测试时,我都会从Windows本身收到一条错误消息,指出Firefox崩溃了。当我按下“强制关闭”按钮时,测试将按原样开始。 我是Eclipse和Selenium的新手,但是在调试器模式下,我没有找到有问题的代码(这么多线程同时运行)。.并没有尝试查找Windows日志,但是也许有些人知道解决方案我