【问题标题】:Flask and watchdog: multiple threads starting烧瓶和看门狗:多线程启动
【发布时间】:2018-05-16 05:11:49
【问题描述】:

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

  1. 创建 Flask 应用程序对象
  2. 启动看门狗
  3. 启动应用程序

在调试模式下运行时,应用程序使用werkzeug的fsevents reloader自动重启,这是正常的;然而,这次重启并没有终止第一个看门狗线程,因此此时有第二个看门狗线程,导致每个文件系统事件都被复制。

这在生产中不会发生,但它影响了我的调试,让我担心我在启动看门狗时做错了什么。为了让看门狗干净地退出,我应该做些什么,或者采取某种方式防止它再次启动?

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

【问题讨论】:

    标签: python flask python-watchdog


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-04
      • 1970-01-01
      • 2012-04-19
      • 2017-02-15
      • 2012-03-14
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多