我计划构建的一个非常原始的休息服务器中有一个后台线程。唯一的问题是这个后台线程似乎运行了两次,最小的可重现代码在这里:
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,它将只运行一次。
为什么调试器会导致它运行两次?