我正在为一些同事写一个小型的本地运行烧瓶供电的网络应用程序。他们不是超级技术精通所以我希望他们能够简单地双击一个链接来运行一个shell脚本,它将启动烧瓶服务器,然后在他们的mac上弹出localhost页面。
我创建了一个简单的文件start
:
python server.py
open http://localhost:5000
但是它弹出两个网页 - 首先是localhost(但是有一个“无法连接”的消息),然后再次使用localhost工作。太奇了!
我尝试在python中使用webbrowser
模块,但这具有相同的效果:
if __name__ == '__main__':
app.debug = True
webbrowser.open("http://localhost:5000/")
app.run()
然后把它放在后面:
if __name__ == '__main__':
app.debug = True
app.run()
webbrowser.open("http://localhost:5000/")
仅在服务器关闭后打开页面。
有什么想法吗?我猜他们可以关闭非工作页面,但功能不是很顺畅。
答案 0 :(得分:2)
使用线程。请参阅此相关帖子。
答案 1 :(得分:0)
将class Report extends Base
{
// Has Many -----
public function contributions() {
return $this->hasMany('App\Models\Remittance\Contribution', 'report_number_id');
}
}
放入函数中,并在(new App\Models\Remittance\Contribution)->select(['vip_id', 'report_number_id'])
->with(['report' => function($query) {
$query->select(DB::raw('max(receipt_date)'));
}])
->whereIn('vip_id', $vipIds)->groupBy('vip_id')->get();
中将此函数作为新线程启动。然后打开webbrowser
答案 2 :(得分:0)
这可能为时已晚,但我需要相同的功能并在此页面上结束......
我想到了这一点,并通过消除过程我尝试添加
use_reloader=False flag
对我的
app.run()
。
问题现在已经消失,但我可以通过控制台跟踪看到它已关闭调试器。如果你不关心这个,那么这可能会有效......
这对我有用......
if __name__ == '__main__':
os.system("open http://localhost:8080")
app.run(
'0.0.0.0',
port=8080,
debug=True,
use_reloader=False, # <== use False and get one tab...but no debug output
答案 3 :(得分:0)
我遇到了同样的问题 也尝试使用其他线程 (python webbrowser.open(url))
并使用os.startfile(url)
获得相同的结果
但是当我将Debug更改为false时,它仅按需要打开了一个标签页
app.run(debug=False)