Python 将更多芹菜任务生成到链中的组中
我有一个芹菜任务链,它通过HTTP请求获取大量文档,大致如下所示: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中的所有任务完成后运行 在代码中,大致如
(acquire_lock.s() |
celery.group([fetch.s(item) for item in batch]) |
release_lock.s()).delay()
(acquire_lock.s() |
celery.group([fetch.s(item) for item in batch]) |
release_lock.s()).delay()
现在的问题是,获取的项可能包含对需要获取的其他项的引用。我想把这些额外的抓取也作为单独的任务,这样它们也可以并行化
我的fetch
-任务是否有办法生成更多的任务,使它们最终与fetch
-任务位于同一组中,也就是说,我的release\u lock
-任务直到所有这些任务都完成后才会运行
我尝试过简单地独立生成这些任务,并让父任务使用get()
等待它们,但这类工作会占用每个父任务的一个工作线程,因此实际上会导致死锁,这可能就是调用get()的原因
API和文档强烈反对从任务中删除