Mar*_*son 2 python multithreading flask
当我尝试在烧瓶应用程序运行的同一过程中启动一个线程时,启动两个线程.因此"一次"将被打印两次.
from threading import Timer
from flask import Flask
app = Flask(__name__)
app.config.update(dict(
DEBUG = True
))
def once():
print("once")
t = Timer(1, once, ())
t.start()
app.run()
Run Code Online (Sandbox Code Playgroud)
这只有在DEBUG为真时才会发生.任何人都知道如何在调试时防止这种情况发生?
Werkzeug的重载支持必须分叉才能正确重新加载模块.因此,您的模块至少进口两次; 更多,如果您更改模块并重新加载.
您可以通过以下方式将其从重新加载器关闭use_reloader=False:
app.run(use_reloader=False)
Run Code Online (Sandbox Code Playgroud)
或者你可以在@app.before_first_request装饰函数中启动你的线程:
t = Timer(1, once, ())
@app.before_first_request
def start_thread():
t.start()
Run Code Online (Sandbox Code Playgroud)
该start_thread功能现在仅在第一个请求进入时执行,而不是在导入时执行.
| 归档时间: |
|
| 查看次数: |
2239 次 |
| 最近记录: |