日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python flask热更新_python(flask)+apscheduler定时邮件重发两次的问题

發布時間:2023/12/15 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python flask热更新_python(flask)+apscheduler定时邮件重发两次的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

工作中遇到一個需求,要在現有系統(airbnb家的開源平臺superset)上添加一個定時郵件的功能。

定時郵件功能使用的是apscheduler這個庫,關于怎么用這里就不多贅述了反正網上都有。

主要記錄一個問題,使用過程中發現郵件有的時候會重發兩次,經過研究之后發現是runserver的時候,調度器實例被創建了兩次。

這個主要和系統使用的flask的一個reload機制有關(FLASK_USE_RELOAD = True),reload主要用于代碼的熱更新(簡單解釋就是,當你runserver啟動服務的時候,會先創建一個主進程,主進程再創建一個子進程。子進程是實際運作的系統,而主進程的主要作用在于監聽代碼的改變,當你python install重裝代碼時,主進程探測到代碼的改變,就會自動重啟子進程,達到代碼熱更新的效果)。

因此當你runserver時,會發現代碼被執行了兩遍。但在系統中調度器實例只應被執行一次,這時可以添加判斷條件:if os.environ.get(‘WERKZEUG_RUN_MAIN‘) == ‘true‘ ,創建主進程時會發現此變量值為None,而創建子進程時此變量為true,僅當此變量為true時創建調度器實例,即可避免上述問題。

參考文章:

http://simple-is-better.com/news/1039

https://stackoverflow.com/questions/25504149/why-does-running-the-flask-dev-server-run-itself-twice

總結

以上是生活随笔為你收集整理的python flask热更新_python(flask)+apscheduler定时邮件重发两次的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。