为什么 Flask Dev Server 在开发过程中运行两次
运行 Flask 开发服务器时,用户可能会注意到起始打印行显示两次。此行为源于 Werkzeug 的重新加载器的使用,它会创建一个子进程以便在代码更改时促进更新。
重新加载器的启动
Flask 应用程序运行时app.run() 方法,该方法在内部利用 Werkzeug 的开发服务器。 restart_with_reloader() 函数启动子进程,导致脚本使用 subprocess.call() 重新运行。
禁用自动重新加载
抑制重复打印,在 app.run() 中将 use_reloader 设置为 False。或者,使用带有--no-reload标志的flask run命令:
FLASK_DEBUG=1 flask run --no-reload
重新加载检测
要确定应用程序是否在重新加载子进程中运行,请使用 werkzeug.serving.is_running_from_reloader function.
模块全局变量的替代方法
如果需要设置模块全局变量,请使用 @app.before_first_request 装饰器创建一个仅执行一次的函数每次重新加载后,根据第一个请求。但是,请注意,这种方法可能会导致使用多个进程的 WSGI 服务器中的多次调用。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3