扩展djcelery taskmeta表

时间:2014-02-28 18:14:11

标签: django task extend djcelery

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

我想添加一个字段来存储此值,以便我可以将此数据与date_done表中的taskmeta字段一起绘制。

我尝试创建一个新模型并与taskmeta表建立外键关系,并在我的任务中根据task_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)

1 个答案:

答案 0 :(得分:1)

使用task.AsyncResult(task_id)。您可以在文档here中详细了解它。