如何在任务中获取芹菜结果模型(使用Django-Celery-results)



我正计划使用django-celery-results后端跟踪状态和芹菜任务的结果。

django-celery-results后端是否适合在任务运行时或仅在完成任务后存储?

首先创建TaskResult模型(在创建任务,任务执行或完成时?(尚不清楚

如果是在任务创建时创建的,如果设置了task_track_started选项,那么在拾取任务时,模型状态会自动更新为运行吗?

可以在任务函数中访问TaskResult实例?

这里的另一个问题似乎是如此指示,但没有提及任务状态更新到运行

关于Taskesult,当然,您可以在执行任务期间访问,您只需要导入:

from django_celery_results.models import TaskResult

使用此功能,您可以通过task_id,task_name等访问模型taskerult filter这是官方代码,您可以通过此字段过滤https://github.com/celery/django-celery-results/blob/master/django_celery_results/models.py

示例:

shared_task(bind=True, name='My custom name for task')
def populate_category_tree(self, *args, **kwargs):
    # * self is a representation from app.Task
    task_result = TaskResult.objects.get_task(self.request.id) 
    task_result.status='RUNNING'
    task_result.save()

此外,您可以在模型字段中为任务添加一些其他数据必需品。当创建任务并且执行中的任务也是适用的修改字段,但如果状态为"成功",您只能读取它,默认情况下,状态任务是自动保存的。

示例:

task_result.meta = json.dumps({'help_text': {'date': '2020-11-30'}})

我建议使用as_dict()功能,在这里您可以观看模型属性。

在设置模块中配置后端AS:

CELERY_RESULT_BACKEND = 'django-db' # in this case it is django DB

如果您将Django DB配置为后端,则可以将其导入为

from django-celery-results.models import TaskResult

相关内容

  • 没有找到相关文章

最新更新