Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将更多芹菜任务生成到链中的组中_Python_Celery_Celery Task - Fatal编程技术网

Python 将更多芹菜任务生成到链中的组中

Python 将更多芹菜任务生成到链中的组中,python,celery,celery-task,Python,Celery,Celery Task,我有一个芹菜任务链,它通过HTTP请求获取大量文档,大致如下所示: (acquire_lock.s() | celery.group([fetch.s(item) for item in batch]) | release_lock.s()).delay() 获取获取批处理的锁 获取批处理的所有项目 释放获取批处理的锁 步骤2是一个由多个单独的获取任务组成的组,每个任务处理批中的一个项目。所有的抓取都是并行进行的 步骤3需要在步骤2中的所有任务完成后运行 在代码中,大致如

我有一个芹菜任务链,它通过HTTP请求获取大量文档,大致如下所示:

   (acquire_lock.s() |
    celery.group([fetch.s(item) for item in batch]) |
    release_lock.s()).delay()
  • 获取获取批处理的锁
  • 获取批处理的所有项目
  • 释放获取批处理的锁
  • 步骤2是一个由多个单独的获取任务组成的组,每个任务处理批中的一个项目。所有的抓取都是并行进行的

    步骤3需要在步骤2中的所有任务完成后运行

    在代码中,大致如下所示:

       (acquire_lock.s() |
        celery.group([fetch.s(item) for item in batch]) |
        release_lock.s()).delay()
    
    现在的问题是,获取的项可能包含对需要获取的其他项的引用。我想把这些额外的抓取也作为单独的任务,这样它们也可以并行化

    我的
    fetch
    -任务是否有办法生成更多的任务,使它们最终与
    fetch
    -任务位于同一组中,也就是说,我的
    release\u lock
    -任务直到所有这些任务都完成后才会运行

    我尝试过简单地独立生成这些任务,并让父任务使用
    get()
    等待它们,但这类工作会占用每个父任务的一个工作线程,因此实际上会导致死锁,这可能就是调用
    get()的原因
    API和文档强烈反对从任务中删除