首页 > 解决方案 > 从 Celery 任务中获取全部数据

问题描述

我目前在我的 Django 项目中使用celery 。下面是我的views.pytasks.py文件。

视图.py

def status_codes(request):
try:
    url = request.GET.get('url')
    urls = linksextraction(url)
    url_codes.objects.all().delete()
    for each_url in urls:
        res = url_status_codes.delay(each_url[1])
    while (res.status == 'PENDING'):# waiting till all tasks are completed
        pass
# Do manipulations from db data

任务.py

@app.task
def url_status_codes(url):
    r = requests.head(url)
    status_code = r.status_code
    spell_words = spellcheck(url, 'English--en')
    if (not spell_words):
        spell_words = 'NA'
    data = url_codes(status_code=status_code, url=url, spell_words=spell_words)
    data.save() # Saving in Database

从上面的代码片段中,我将tasks.py中的结果保存在数据库中,当所有任务完成后,我从db中获取结果并进行操作。

有没有办法在不保存到数据库的情况下将 tasks.py 中的所有结果获取到 views.py。

标签: pythondjangoasynchronouscelerydjango-celery

解决方案


推荐阅读