Flask 应用 "Restarting with stat"

Flask app "Restarting with stat"

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

 * Running on http://127.0.0.1:5000/
 * Restarting with reloader

已被替换为:

 * Restarting with stat

我认为我没有做任何不同的事情,事实上,我首先克隆了一个我多次使用过的初学者工具包项目,它本身并没有显示这种行为。我还注意到这个项目稳定地消耗了大约 15% CPU,而我的另一个项目几乎没有。

知道为什么会这样吗?

检查您的 Werkzeug 版本。 0.10 版刚刚发布,重新加载器进行了大量更改。一个变化是使用了默认的轮询重新加载器;旧的 pyinotify 重新加载器显然不准确。如果您想要更高效的轮询,请安装 watchdog package. You can see the code related to this here.

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


Watchdog 可能与 gevent 不兼容。如果您使用 gevent 并且在使用 Watchdog 时遇到重新加载程序的问题,请检查 this GitHub issue.

使用run(use_reloader=False)禁用重新加载器。

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

如果您 运行 和 app.run(debug=True),它将 运行 重新加载程序作为调试模式的一部分。如果您不想使用调试模式,请传递 debug=False 或根本不传递它。

我的文件名为 __main__.py,我将其导出为:export FLASK_APP=__main__.py 将名称更改为 app.py 并重新导出后,它起作用了。