Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.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_Django_Celery - Fatal编程技术网

Python 什么时候和芹菜一起散开与延迟

Python 什么时候和芹菜一起散开与延迟,python,django,celery,Python,Django,Celery,在我学习芹菜的过程中,试图找出最佳实践 我想在另一份工作中分散出一堆小工作。我知道分组是从一堆排队的小工作中获得结果的好方法,但是如果我不关心结果呢?我只想把一个大任务分成一堆小任务。在这种情况下,在循环中调用延迟也是一样的吗 当想要散开时,使用组,并在父作业中排列一组较小的作业,这仍然是最佳做法吗?下面是一些伪代码作为示例 @app.task def call_job(job_args): groups([for small_job.s(x) for x in job_args]).

在我学习芹菜的过程中,试图找出最佳实践

我想在另一份工作中分散出一堆小工作。我知道分组是从一堆排队的小工作中获得结果的好方法,但是如果我不关心结果呢?我只想把一个大任务分成一堆小任务。在这种情况下,在循环中调用延迟也是一样的吗

当想要散开时,使用组,并在父作业中排列一组较小的作业,这仍然是最佳做法吗?下面是一些伪代码作为示例

@app.task 
def call_job(job_args):
    groups([for small_job.s(x) for x in job_args]).delay()

@app.task
def small_job(x):
    # do something 
vs


我认为您应该使用第二种方法(
for
loop):

  • 当您想知道所有较小的任务都已完成时(因为您想一起查看它们的结果),请使用
    group
  • 当只有在所有任务完成后才能执行另一个操作/任务时,请使用
    group
    (和弦)
在幕后,需要有人(芹菜后端)负责管理已完成的任务,以便它能够回答组结果是否已准备就绪()

底线是,如果您不关心任务的返回值,并且完成的任务与后续操作之间没有依赖关系,那么请使用
for
循环

@app.task 
def call_job(job_args):
    for x in job_args:
        small_job.delay(x)

@app.task
def small_job(x):
    # do something