【问题标题】:python cgi won't load nextpython cgi接下来不会加载
【发布时间】:2012-02-09 17:32:15
【问题描述】:

我编写了一个 cgi 脚本,它将使用 os.system("firefox &") 打开一个 firefox 窗口。

所以想法是它会为我创建一个 Firefox 窗口,然后为远程用户打印一个确认页面。

问题是它只在我关闭 firefox 窗口后打印确认页面。这尤其令人费解,因为如果我在终端中运行脚本而不是让 apache 运行它,它会像预期的那样立即打印确认 html。

谁能提供任何关于为什么我无法立即加载确认页面的见解?

【问题讨论】:

  • 为什么要让 CGI 脚本在服务器上打开窗口呢?
  • 我正在尝试让我的 android 成为遥控器
  • 我知道这是一个巨大的安全隐患,但这是我的 htpc,上面没有敏感材料

标签: python apache shell cgi


【解决方案1】:

不要使用os.system。使用subprocess module

os.system documentation 说:

子进程模块为生成提供了更强大的工具 新流程并检索其结果;使用该模块是 最好使用这个功能。

试试这个:

subprocess.Popen(['firefox'])

【讨论】:

  • 现在我有:subprocess.Popen(['sudo', '-u', 'userwithpermissions', '/home/script/to/set/envvars/','/usr/lib/firefox-10.0/firefox --display=:0.0 &', '&'])。问题仍然存在——它可以在服务器上正常打开 Firefox,但客户端只能半加载下一页。一旦我关闭 firefox 窗口,它就会加载客户端确认页面的其余部分。
  • 我的猜测是,当有活的子进程时,apache 会保持 CGI 进程处于活动状态,因此不会将整个响应发送给客户端。
  • 这是有道理的。你认为 mod_wsgi、mod_python 或 mod_fastcgi 会有所帮助吗?
  • 或者我可以欺骗firefox的退出状态?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
相关资源
最近更新 更多