1

我计划构建的一个非常原始的休息服务器中有一个后台线程。唯一的问题是这个后台线程似乎运行了两次,最小的可重现代码在这里:

import threading
import time
from flask import Flask

app = Flask(__name__, template_folder='templates')

def feedworker():
    print("STARTING FEEDWORKER")
    while True: # background thread. never stop updating
        time.sleep(75)

def runbackground():
    feeder_thread = threading.Thread(target=feedworker)
    feeder_thread.daemon = True
    feeder_thread.start()

if __name__ == "__main__":
    runbackground()
    app.run(debug=True)

runbackground应该启动挂起的后台。最大的feedworker问题是,它似乎启动了两次(终端输出):

STARTING FEEDWORKER
 * Serving Flask app "testthread" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
STARTING FEEDWORKER
 * Debugger is active!
 * Debugger PIN: 297-719-925

所有日志(还有更多)表明feedworker已经启动了两次。但如果您注释掉最后一行 ( app.run(debug=True)) 或仅注释掉debug=True,它将只运行一次。

为什么调试器会导致它运行两次?

4

0 回答 0