首页 > 解决方案 > 通过 API 显示执行 Celery 任务的结果

问题描述

我从 POST 请求中依次获得了几个网站地址。我会得到工作ID。该任务收集任何 HTML 标记的数量。接下来,通过api,你需要通过任务号来显示结果。如何实现从任务中保存结果?

我将使用此代码来计算 HTML 标记:

@app.task(serializer='json')
def demo(request, some_url):
    if request.method=="POST" 
        page = requests.get(some_url)
        tree = html.fromstring(page.content)

        all_elms = tree.cssselect('*')
        all_tags = [x.tag for x in all_elms]

        c = Counter(all_tags)
        """for e in c:
            #print('{}: {}'.format(e, c[e]))"""
        return с

PS Code 是可选的,我有足够的关于我的主题或想法的链接!

标签: pythondjangocelery

解决方案


from celery.result import AsyncResult
from project.celery import app        #import your celery app
res = AsyncResult('task_id', app=app)
res.state #gives you the state of the task
res.get() #gives you the result

您可以在 API 中使用此代码段


推荐阅读