Flask和watchdog:多线程启动

时间:2018-05-16 05:11:50

标签: python flask python-watchdog

我正在使用Flask编写一个应用程序,它监视文件系统的更新并记录它们。我的启动顺序(在调试模式下)是:

  1. 创建Flask应用程序对象
  2. 启动Watchdog
  3. 启动应用程序
  4. 在调试模式下运行时,应用程序会自动使用werkzeug的fsevents重新加载器重新启动,这是正常的;但是,此重新启动不会终止第一个监视程序线程,因此此时会出现第二个监视程序线程,导致每个文件系统事件都被复制。

    这在生产中没有发生,但它影响了我的调试,让我担心我在启动看门狗时出错了。我是否应该做些什么才能让看门狗彻底退出,或者某种方式阻止它再次启动?

    此外,当应用程序由于代码编辑而重新启动时,第二个看门狗线程会正确重启;它只是第一个在初始重新加载之前启动的看门狗,它不会在重新加载时关闭。

1 个答案:

答案 0 :(得分:0)

不是在应用程序启动之前启动后台线程,而是使用app.before_first_request启动线程更干净,更安全。这样做的缺点是后台线程在第一个请求进入之前不会启动。