1

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

当我在本地运行该应用程序时,它可以正常工作。但是当我部署到 OpenShift 时,该应用程序不会启动选项卡或指示任何错误。webbrowser 在我的本地机器上与 PaaS 上的运行方式不同有什么原因吗?我已经在 OSX 上的 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"
4

1 回答 1

1

webbrowser在运行 Python 的机器上打开浏览器。当你在开发时,运行 Python 的机器和用户浏览的机器是一回事,一切似乎都正常。当您部署到 OpenShift 时,运行 Python 的机器就是部署代码的 OpenShift 框……这根本不是您想要打开新浏览器实例的地方。

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

于 2014-06-25T03:49:55.927 回答