分享
三行代码  ›  专栏  ›  技术社区  ›  Rocky Li

为什么flask调试器会导致线程运行两次后台线程[重复]

  •  0
  • Rocky Li  · 技术社区  · 6 月前

    这个问题已经有了答案:

    在python中构建flask服务并打开调试模式时,flask服务将初始化两次。当初始化加载缓存等时,这可能需要一段时间。在开发(调试)模式下,必须这样做两次是很烦人的。当debug关闭时,flask服务只初始化一次。

    如何阻止烧瓶在调试模式下初始化两次?

    0 回复  |  直到 1 年前
        1
  •  107
  •   Sean Vieira    5 年前

    这里要做的最简单的事情就是 use_reloader=False 打给你的电话 app.run -即: app.run(debug=True, use_reloader=False)

    或者,您可以检查 WERKZEUG_RUN_MAIN 在环境中:

    if os.environ.get("WERKZEUG_RUN_MAIN") == "true":
        # The reloader has already run - do what you want to do here
    

    但是,如果您希望在任何时候都发生这种行为,那么条件就更加复杂了。 除了 在加载过程中:

    if not app.debug or os.environ.get("WERKZEUG_RUN_MAIN") == "true":
        # The app is not in debug mode or we are in the reloaded process
    
        2
  •  17
  •   Tagman    1 年前

    您可以使用 before_first_request 钩子:

    @app.before_first_request
    def initialize():
        print "Called only once, when the first request comes in"