gpt4 book ai didi

python - 如何在任务中获取 celery 结果模型(使用 django-celery-results)

转载 作者:行者123 更新时间:2023-12-01 07:54:52 25 4
gpt4 key购买 nike

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

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

尚不清楚 TaskResult 模型何时首次创建(任务创建、任务执行或完成时?)

如果它是在任务创建时创建的,并且设置了 task_track_started 选项,那么当任务被选取时,模型状态是否会自动更新为 RUNNING?

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

另一个问题here似乎表明如此,但没有提到任务状态更新为“正在运行”

最佳答案

关于Taskresult,当然你可以在执行任务时访问,只需要导入:

from django_celery_results.models import TaskResult

通过此功能,您可以按任务 ID、任务名称等访问模型任务结果过滤器,这是官方代码,您可以通过任何此字段进行过滤 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() 函数,在这里您可以查看模型属性。

关于python - 如何在任务中获取 celery 结果模型(使用 django-celery-results),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56034038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com