我正在编写一个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"
答案 0 :(得分:1)
webbrowser
在运行Python的计算机上打开浏览器 。在开发时,运行Python的机器和用户正在浏览的机器是同一个,一切似乎都有效。当您部署到OpenShift时,运行Python的机器是部署代码的OpenShift框...这根本不是您想要打开新浏览器实例的地方。
相反,您需要触发几个新窗口,以便通过JavaScript window.open
打开。这将导致浏览器打开几个新选项卡,而不是在运行服务器代码的计算机上调用新的浏览器进程。