为什么webbrowser lib在本地和远程运行时表现不同?

时间:2014-06-25 03:38:16

标签: python python-2.7 flask openshift python-webbrowser

我正在编写一个Flask(python 2.7)应用程序,其中一个函数使用webbrowser lib在用户的浏览器中打开几个新选项卡(类似于Kayak)。

当我在本地运行它时,该应用程序正常工作。但是,当我部署到OpenShift时,该应用程序不会启动选项卡或指示任何错误。有没有理由说明为什么webbrowser在我的本地机器和PaaS上的运行方式不同?我在OSX&amp ;;的Chrome / Safari / Firefox中试过这个Android上的Chrome。感谢您的帮助!

这是功能:

def launch(data):
  try:
    for x in data:
      webbrowser.open(x['url'],new=2)
      # i've also tried .open_new_tab(x['url'])
  except TypeError:
    return render_template('error.html')

这里是tail的输出:

[24/Jun/2014:23:19:24 -0400] "GET /-JQDELftipTPc12ohHy4 HTTP/1.1" 200 2563 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"
[24/Jun/2014:23:19:25 -0400] "GET /static/style.css HTTP/1.1" 304 - "http://tshare-nealrs.rhcloud.com/-JQDELftipTPc12ohHy4" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"
[24/Jun/2014:23:19:25 -0400] "GET /static/share.js HTTP/1.1" 304 - "http://tshare-nealrs.rhcloud.com/-JQDELftipTPc12ohHy4" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"

1 个答案:

答案 0 :(得分:1)

webbrowser在运行Python的计算机上打开浏览器 。在开发时,运行Python的机器和用户正在浏览的机器是同一个,一切似乎都有效。当您部署到OpenShift时,运行Python的机器是部署代码的OpenShift框...这根本不是您想要打开新浏览器实例的地方。

相反,您需要触发几个新窗口,以便通过JavaScript window.open打开。这将导致浏览器打开几个新选项卡,而不是在运行服务器代码的计算机上调用新的浏览器进程。