芹菜 - 无法获取任务结果

Posted

技术标签:

【中文标题】芹菜 - 无法获取任务结果【英文标题】:Celery - Cannot fetch task results 【发布时间】:2018-12-06 02:41:03 【问题描述】:

我使用 Django ORM/Cache 作为 celery 的结果后端。我可以看到在数据库中创建了django_celery_results_taskresult 表。任务完成后,结果也会插入到数据库中,可以从 mysql 中查看。但是当我尝试使用AsyncResult 和来自django manage.py shell 的任务ID 访问结果时,出现以下错误。

>>> AsyncResult.get('88e4d870-1a2b-4675-8f7c-1eacb7199bda')
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/root/vms/lib/python3.6/site-packages/celery/result.py", line 199, in get
    if self.ignored:
AttributeError: 'str' object has no attribute 'ignored'
>>> AsyncResult('88e4d870-1a2b-4675-8f7c-1eacb7199bda').get()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/root/vms/lib/python3.6/site-packages/celery/result.py", line 224, in get
    on_message=on_message,
  File "/root/vms/lib/python3.6/site-packages/celery/backends/base.py", line 470, in wait_for_pending
    no_ack=no_ack,
  File "/root/vms/lib/python3.6/site-packages/celery/backends/base.py", line 773, in _is_disabled
    raise NotImplementedError(E_NO_BACKEND.strip())
NotImplementedError: No result backend is configured.
Please see the documentation for more information.

我的celery.py 文件是:

from __future__ import absolute_import, unicode_literals
from celery import Celery
import os

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'vms.settings')

app = Celery('vms', broker='redis://localhost', include=['cve.tasks','cpe.tasks'])

app.conf.update(
    result_backend='django-db',
    timezone = 'Asia/Kolkata'
)

if __name__ == '__main__':
    app.start()

我已将django_celery_results 包含在settings.py INSTALLED_APPLICATIONS 中。

结果被插入数据库但无法检索,我觉得很奇怪。

【问题讨论】:

【参考方案1】:

您必须导入您的应用才能访问结果。在您的 shell 中尝试以下代码:

from path.to.celery import app


app.AsyncResult('88e4d870-1a2b-4675-8f7c-1eacb7199bda')

【讨论】:

我猜你刚刚解决了我几天的问题,非常感谢。 ***.com/questions/68865144/… 乐于帮助@lowercase00

以上是关于芹菜 - 无法获取任务结果的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 中等待芹菜任务的结果

无法获得实时信息的芹菜任务

从芹菜任务中获取芹菜工人的名字?

在任务中获取芹菜节拍触发时间

芹菜。获取当前链的id

检索芹菜队列中的任务列表