我正在使用Flask编写一个应用程序,它监视文件系统的更新并记录它们。我的启动顺序(在调试模式下)是:
在调试模式下运行时,应用程序会自动使用werkzeug的fsevents重新加载器重新启动,这是正常的;但是,此重新启动不会终止第一个监视程序线程,因此此时会出现第二个监视程序线程,导致每个文件系统事件都被复制。
这在生产中没有发生,但它影响了我的调试,让我担心我在启动看门狗时出错了。我是否应该做些什么才能让看门狗彻底退出,或者某种方式阻止它再次启动?
此外,当应用程序由于代码编辑而重新启动时,第二个看门狗线程会正确重启;它只是第一个在初始重新加载之前启动的看门狗,它不会在重新加载时关闭。
答案 0 :(得分:0)
不是在应用程序启动之前启动后台线程,而是使用app.before_first_request
启动线程更干净,更安全。这样做的缺点是后台线程在第一个请求进入之前不会启动。