Celery从链任务生成组任务

时间:2016-11-13 07:14:17

标签: python celery celery-task

我正在尝试用芹菜(v4.0)链接以下任务,

task = group([tasks1.s(), task2.s()) | generate_job_requests.s() | execute_job.map() | aggregate_result.s()
result = task.get()

以上部分作为和弦正常工作到generate_job_requests。 但是问题从execute_job开始,它从generate_job_requests获取作业列表,我需要创建并行任务,然后是所有作业的聚合结果。

我正在尝试验证芹菜是否可以使用这种任务图?有没有可能的替代工作流来解决这种依赖的问题? 我在文档中遗漏的任何内容。

1 个答案:

答案 0 :(得分:0)

我使用类似于中间任务创建者的地图功能,其作用类似于和弦,

Blade::directive('showIfError', function($fieldName) {
    $errors = session('errors');

    if ($errors->has($fieldName)) {
        return "<span class='help-block'>".$errors->first($fieldName)."</span>";
    }
});

因此,任务流程减少了,

@shared_task(ignore_result=False)
def dmap(it, callback, end_task):
    callback = subtask(callback)
    grp = group(callback.clone([arg, ]) for arg in it)
    c = (grp | end_task)
    return c()

为了获得最终的任务输出,我做了一些调整,

task = (group([tasks1.s(), task2.s()) | generate_job_requests.s() | dmap.s(
        execute_job.s(), aggregate_result.s())).apply_async()

我提到answer