我有一个flask应用程序,该应用程序在后台运行繁重的查询,导致对Web应用程序的请求的加载时间较慢(5-15秒)。
为解决此问题,我添加了Celery作为代理,并添加了Redis作为后端。我的目标是每5分钟预先执行一次每个查询,这样用户每次加载页面时都不必等待5-15秒。
我已经成功创建了celerybeat计划,我在日志中看到它每分钟执行一次查询(出于测试目的,而不是5分钟)。
celery.conf.update(
CELERYBEAT_SCHEDULE = {
'update-every-minute': {
'task': 'task.celery',
'schedule': timedelta(seconds=60),
'args': ()
},
},
)
问题是,如何更新数据到烧瓶路径?
如果我将“任务”放在路线内,则这样:
from app.tasks import tasks
@app.route('/')
def home():
result = task.apply_async()
return jsonify(result.get())
它仍然会在每次获取请求时重新加载页面...
这是使这项工作简单的方法吗? :)