如何让BackgroundScheduler更新Flask路由中的变量?

问题描述 投票:0回答:1

如何在 Flask 中重新加载网页时更新 current_time 变量?

from flask import Flask, render_template
app=Flask(__name__) 
import time
from datetime import datetime

from apscheduler.schedulers.background import BackgroundScheduler

current_time = 000
sched = BackgroundScheduler()
def job1():
    print('this prints 5 sec')
    now = datetime.now()
    current_time = now.strftime("%d/%m/%Y %H:%M:%S")

@app.route('/')
def home():
    return render_template('home.html', current_time=current_time)

if __name__ == '__main__':
    sched.add_job(id='job1', func=job1, trigger = 'interval', seconds=5)
    sched.start()
    app.run(host='0.0.0.0')
    app.run(debug=True, use_reloader=False)

当我运行此命令时,“此打印 5 秒”部分在终端中起作用,但重新加载时,{{current_time}} 不会在网页上更新。只是保持“0”

(我知道还有其他方法可以获取网页上的当前时间,这只是一个简化的示例,我想定期更新变量,然后在加载页面时在 html 页面上更新它们。)

python flask routes apscheduler
1个回答
0
投票

要在页面重新加载时更新 current_time 变量,您需要在 home() 函数中更新它。通过全局变量访问它应该可以。

def home():
     global current_time
© www.soinside.com 2019 - 2024. All rights reserved.