gpt4 book ai didi

python - 在哪里放置更新数据库的预定功能,以免干扰?

转载 作者:太空宇宙 更新时间:2023-11-03 20:34:27 25 4
gpt4 key购买 nike

我正在使用 python 中的调度模块来运行一个每 5 分钟更新 mysql 数据库的函数。

database_update_function.py

def update_aqi():
query = db.select([Aqi.id, Aqi.City])
result = db.engine.execute(query).fetchall()
for each_city in result:
current_city = each_city[1]
current_id = each_city[0]
aqi_response = get_aqi(current_city)
returned_aqi_data = aqi_response['data']['aqi']
returned_time = aqi_response['data']['time']['s']

update_this = Aqi.query.filter_by(id=current_id).first()
update_this.Aqi = returned_aqi_data
update_this.time = returned_time
db.session.commit()

return "updated time at ...."

以及安排此操作的函数

def dbUpdate():
schedule.every(5).minutes.do(update_aqi)
While True:
schedule.run_pending()
time.sleep(1)
pass

我尝试在 app.py 被调用时运行该函数,但它必须等待 5 分钟才能渲染主页。

还尝试在下面插入 dbUpdate() 函数

@app.route("/")
def index():
"""Return the homepage."""
dbUpdate()
return render_template("index.html")

仍然需要等待,因此我尝试插入到我的其他 route ,但这一切都延迟了该路线必须执行的操作。哪里是插入的最佳位置,因此它只会从后面运行而不会干扰?

最佳答案

1) 数据库级别 - 在 MySQL 中,您可以创建按定义的时间间隔运行的 EVENTmore here

2)您可以使用类似 Celery 的内容,这是一个异步任务队列。

关于python - 在哪里放置更新数据库的预定功能,以免干扰?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57261971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com