Flask应用程序"使用stat重新启动"

dom*_*ato 53 python flask

我已经构建了一些Flask应用程序,但在我的最新项目中,我注意到在开发模式下有点奇怪.终端中常用消息的第二行始终显示:

 * Running on http://127.0.0.1:5000/
 * Restarting with reloader
Run Code Online (Sandbox Code Playgroud)

已被替换为:

 * Restarting with stat
Run Code Online (Sandbox Code Playgroud)

我认为我没有做过任何不同的事情,事实上,我开始克隆一个我多次使用的入门套件项目,它本身并没有显示出这种行为.我还注意到这个项目稳定地消耗了大约15%的CPU,而我的另一个项目几乎没有什么特点.

任何想法为什么会这样?

dav*_*ism 46

检查您的Werkzeug版本.版本0.10刚刚发布,并且重新加载了许多更改.一个变化是使用默认轮询重新加载器; 旧的pyinotify重新加载器显然是不准确的.如果您想要更有效的轮询,请安装该watchdog软件包.您可以在此处查看与此相关的代码.

当Werkzeug找不到看门狗时,它使用stat重新加载器,否则它使用看门狗使用的任何重载器,这可能因平台而异.此消息只是让您知道正在使用哪一个.


看门狗可能与gevent不兼容.如果您使用gevent并在使用Watchdog时遇到重新加载器问题,请检查此GitHub问题.


小智 24

使用run(use_reloader=False)禁用reloader.

它给了我一些问题,它重新启动时无法找到我的服务器文件.这样做了.它只执行一次,一切正常.很奇怪.

  • 在OP中,我希望重新加载程序正在运行-我只是不希望它占用我的CPU。 (2认同)

小智 5

如果使用进行运行app.run(debug=True),它将在调试模式下运行重新加载器。如果您不想使用调试模式,请通过debug=False或完全不通过它。