Django 扩展DJ芹菜任务元表

Django 扩展DJ芹菜任务元表,django,task,extend,djcelery,Django,Task,Extend,Djcelery,我想扩展DJ芹菜taskmeta表,例如,我有一个返回整数值的计划任务 我想添加一个字段来存储此值,这样我就可以将此数据与taskmeta表中的date\u done字段一起绘制图形 我尝试创建一个新模型,并与taskmeta表建立foreignkey关系,然后在我的任务中根据task\u id在这个新表中添加一行 但我想当任务执行时,我将无法执行,因为我假设taskmeta数据此时尚未保存,即: if mover.request.id: try: task = Tas

我想扩展DJ芹菜
taskmeta
表,例如,我有一个返回整数值的计划任务

我想添加一个字段来存储此值,这样我就可以将此数据与
taskmeta
表中的
date\u done
字段一起绘制图形

我尝试创建一个新模型,并与
taskmeta
表建立foreignkey关系,然后在我的任务中根据
task\u id
在这个新表中添加一行

但我想当任务执行时,我将无法执行,因为我假设
taskmeta
数据此时尚未保存,即:

 if mover.request.id:
    try:
        task = TaskMeta.objects.get(task_id=mover.request.id)
                    extend_task_info = TaskExtended(task=task)
                    extend_task_info.save()
    except ObjectDoesNotExist:
        logger.error('Task ID: %s not in the DB' % mover.request.id)
添加任务代码:

@task()
def mover():
    for root, dirs, files in os.walk(src_dir):
        path = root.split('/')
        for file in files:
            counter = process_file(os.path.join(root, file))

    if mover.request.id:
        try:
            tn = TaskMeta.objects.get(task_id=mover.request.id)
            extend_task_info = TaskExtended(task=task)
            extend_task_info.counter = counter
            extend_task_info.save()
        except ObjectDoesNotExist:
            logger.error('Task ID: %s not in the DB' % mover.request.id)

使用
task.AsyncResult(任务id)
。您可以在文档中阅读更多信息。

您是否收到任何错误?是的,异常是raise,任务ID:eb381eda-6f2e-4c2c-8731-f290c02e4d2d不在数据库中。对不起,我不确定我是否完全理解。这将返回一个异步结果,不是吗?这将如何帮助我将扩展信息保存到taskmeta表中,或在我执行任务时扩展到另一个表中?你能详细说明一下吗?谢谢。@JoeLones-当然。使用
.AsyncResult()
可以在任务运行时访问该任务。这在您的情况下很好,因为您正在尝试在它存在之前对其进行扩展,或者尚未完成,因此出现了
ObjectDoesNotExist
异常。我修改了op并添加了任务代码,但仍然不确定是否掌握了它。在上面的代码中,异常不会总是触发。任务结束后,任务元数据是否保存?正确,它将始终引发异常,因为任务在完成之前不会保存
.AsyncResult()
允许您在任务运行时异步访问任务。对,如果没有通过外键引用的TaskMeta实例,我如何保存TaskExtended信息?那就不可能了?