如何从芹菜后端存储中检索meta

2024-05-17 04:35:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用celery和flask应用程序来启动一些后台任务,我使用mongoDB作为后端。在

我想在后端存储一些有关正在启动的任务的信息,然后能够检索到它。在

我相信关键在于使用self.update_state(state= ..., meta = {}),其中meta是我的自定义信息。但是我没有发现任何有效的东西。在


Tags: self信息应用程序flaskmongodbupdatemetacelery
1条回答
网友
1楼 · 发布于 2024-05-17 04:35:56

我们假设你有这样一个任务:

@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'}

你有这样的烧瓶路线:

^{pr2}$

最后,您的任务状态路径如下所示:

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)

相关问题 更多 >