我已经用 Celery 设置了 Django,使用 django_celery_results 和 django_celery_beat 来安排任务并存储结果。任务运行成功,但我遇到了 django_celery_results 表的问题。
我的数据库中的 django_celery_results 表仅包含 UUID、任务状态和完成时间。但是,我希望看到其他字段,例如 periodicaltaskname 和 taskname。缺少这些字段会导致跟踪和管理计划任务变得困难。
`#celery.py`
celery.conf.result_backend = os.environ.get('DATABASE_URL')
我已经查看了 django_celery_results 和 django_celery_beat 的文档,但找不到明确的解决方案。我还检查了我的 Celery 配置,一切似乎都正常。
我希望 django_celery_results 表除了 UUID、任务状态和完成时间之外还包含诸如 periodicaltaskname 和 taskname 之类的字段。
django_celery_results
已经包含以下字段:任务 ID、定期任务名称、任务名称、完成日期时间、任务状态、工作人员。
请确保将
django_celery_results
添加到INSTALLED_APPS
中的settings.py
:
INSTALLED_APPS = [
...
"celery",
"django_celery_beat",
"django_celery_results",
...
]
添加应用后请不要忘记数据库迁移。然后,在像这样的示例完成 celery 任务之后,您应该以 dict 类型返回结果:
@shared_task(bind=True)
def analyze_all_posts(self, *args, **kwarg):
posts = Post.objects.all() # Example
try:
return {"status": True, "message": f"{len(posts)} post(s) analyzed"}
except Exception as e:
return {"status": False, "message": str(e)}