我正在使用带有烧瓶应用程序的芹菜来启动一些后台任务,我使用mongoDB作为后端。
我想在后端存储一些有关正在启动的任务的信息,然后才能检索它。
我认为关键在于使用let img = document.createElement("img")
{
src = "foo.png";
className = "bar";
id = "abc123";
}
,其中meta是我的自定义信息。但是我找不到任何工作。
答案 0 :(得分:2)
我们假设您有这样的任务:
@celery.task(bind=True)
def counter(self):
for i in xrange(100):
time.sleep(1)
self.update(state='PROGRESS', meta={'current': i})
return {'status': 'complete'}
你有这样的烧瓶路线:
@app.route('/count/')
def count_100():
"""
this starts a counter task and returns a response immediately
"""
task = counter.delay()
# this will return an empty json object with 202 http code status
# which means requests is still in progress and a Location header
return jsonify(), 202, dict(Location=url_for('status', task_id=task.id))
最后你的任务状态路线是这样的:
from celery.result import AsyncResult
...
@app.route('/status/<task_id>/')
def status(task_id):
task = AsyncResult(task_id) # retrieving the task we started
if task.state == 'PROGRESS':
response = {
'state': task.state,
'current': task.info.get('current', 0)
}
return jsonify(response)