Django Celery 结果表缺少periodictaskname 和taskname 字段

问题描述 投票:0回答:1

我已经用 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 之类的字段。

celery django-celery periodic-task django-celery-beat django-celery-results
1个回答
0
投票

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)}
© www.soinside.com 2019 - 2024. All rights reserved.