簡體   English   中英

如何在單獨的線程中從python腳本中啟動flask應用程序?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM