我正在使用 Flask 编写一个应用程序,它监视文件系统的更新并记录它们。我的启动顺序(在调试模式下)是:
- 创建 Flask 应用程序对象
- 启动看门狗
- 启动应用程序
在调试模式下运行时,应用程序使用werkzeug的fsevents reloader自动重启,这是正常的;但是,此重新启动不会终止第一个看门狗线程,因此此时有第二个看门狗线程,导致每个文件系统事件都被复制。
这在生产中不会发生,但它影响了我的调试,让我担心我在启动看门狗时做错了什么。为了让看门狗干净地退出,我应该做些什么,或者以某种方式防止它再次启动?
此外,当应用程序由于代码编辑而重新启动时,第二个看门狗线程确实会正确重新启动;只有在初始重新加载之前启动的第一个看门狗不会在重新加载时关闭。