把flask和tornado同時整合到一個專案中,在同一個程序中運用起來
阿新 • • 發佈:2018-12-30
單獨把flask和tornado運用起來的例子非常多,可以網上搜索下有很多,這裡就不贅述了。
我想了一種方案就是把flask和tornado同時整合在一個工程中,在同一個程序中跑起來。
我的方案是flask按正常的流程執行起來。
flask 在主執行緒中這樣跑:
from app import app
app.debug = True
app.run(host='0.0.0.0',port=5000) #這樣用來監聽所有的ip,團隊除錯用
tornado用一個執行緒封裝後執行:
class WSServer(threading.Thread): def__init__(self): threading.Thread.__init__(self) self.wsapp = tornado.web.Application( handlers=[ (r"/", IndexHandler) ] ) def run(self):
self.wsapp.listen(6000) tornado.ioloop.IOLoop.instance().start()
-------------------------------------------------------------------------------------------------------------------
這樣執行後發現fork了兩個程序出來,一個是flask的5000,另一個是tornado的6000
我感到非常的疑惑,後來找了很久最終找到了原因。
原因是DEBUG模式下flask開多一個執行緒來監視專案的變化。
如果你想要避免載入兩次,應該設定app.run(debug=True,
use_reloader=False)