[英]How to start a flask app from within a python script in a separate thread?
我有一個腳本,它從內部服務中提取數據並將數據類型的計數存儲在內存中,如下所示:
metrics = {
"new_accounts": 152,
"acquisitions": 2005,
...
}
這是在內存中完成的,整個過程由此腳本中的subscribe
方法啟動:
if __name__ == "__main__":
loop = asyncio.get_event_loop()
for signal in [signal.SIGHUP, signal.SIGTERM, signal.SIGINT]:
loop.add_signal_handler(
signal, lambda s=signal: asyncio.create_task(close_subscriptions(s, loop)))
for subscription in SUBSCRIPTION_TYPES:
loop.create_task(subscribe(subscription))
loop.run_forever()
我想通過燒瓶中的端點公開該metrics
數據以進行監視。 在一個線程中,我可以像下面這樣在腳本中啟動flask應用程序嗎:
if __name__ == "__main__":
...
for subscription in SUBSCRIPTION_TYPES:
loop.create_task(subscribe(subscription))
... <start flask app in a separate thread>
loop.run_forever()
這有意義嗎? 我已經在本地運行了flask應用,但是它無法訪問此metrics
數據。 這是我需要解決的方法嗎?
嘗試將您的指標放入隊列:
https://docs.python.org/2/library/queue.html
Flask端點可以從Queue中讀取所有數據,並將最后一個值公開為端點數據
干杯,芬里爾
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.