我正计划使用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