我使用调度程序在app.run()之前调用一个函数-“DataBaseUpdate”,里面有一个“While True”循环。 我的设计就像我有一个在 app.py 中不断更新数据库的功能,然后应用程序显示数据库中的内容。
但似乎在 Flask 应用程序启动后,我的应用程序不再在后端运行。就像它运行一次然后完成一样。如何让我的程序继续运行后端并更新数据库?
if __name__ == "__main__":
with app.app_context():
db.create_all() # <--- create db object.
start = datetime.date.today()+ datetime.timedelta(days=1) #set start and end time
end= start + datetime.timedelta(days=10)
scheduler = BackgroundScheduler()
scheduler.add_job(DataBaseUpdate, 'interval', seconds=30)
scheduler.start()
port = int(os.environ.get('PORT', 5000))
app.run(debug=True, host='0.0.0.0', port=port)
最终我发现下面的代码有效。但是,我不知道为什么直到第一个计时器 <=> 1 小时到达才得到结果。
scheduler = BackgroundScheduler()
scheduler.add_job(func=NA1, trigger="interval", hours=1)
scheduler.start()
if __name__ == "__main__":
with app.app_context():
db.create_all() # <--- create db object.
#thread1 = threading.Thread(target=NA1,name='NAThread')
#thread1.start()
#scheduler.start()
port = int(os.environ.get('PORT', 5000))
app.run(debug=True, host='0.0.0.0', port=port)