2017-09-12 34 views
0

当我使用芹菜组和链调度任务如下有人可以向我解释芹菜组是如何工作的吗?

(group([group_task]) | sum_task).apply_async() 

在组任务可以在许多工人被执行,所有的组任务完成之后,sum_task开始执行(也许在其他工人),所以 谁可以告诉我芹菜知道小组任务全部完成,然后启动sum_task?

回答

1

您可以不同地为每个链接任务和组/和弦回调任务指定队列。

网页摘要:

@shared_task(name="analyze_atom", queue="atom") 
def analyze_atom(image_urls, targetdir=target_path, studentuid=None): 
    return {} 


@shared_task(name="summary_up", queue="summary") 
def summary_up(rets, studentuid, images): 
    return {} 


chord(analyze_atom.s([image]) for image in images)(summary_up.s(studentuid, images)) 

而且,当任务运行时,您可以检查经纪人的内容,假设你正在使用的RabbitMQ作为经纪人,你可以检查通过的RabbitMQ管理插件,或者在这里pyrabbit接口片断队列深度:

from pyrabbit.api import Client 
cl = Client('localhost:15672', 'guest', 'guest') 
count = cl.get_queue_depth('/', 'summary') # this guy check queue depth 
cl.get_messages('/','paperanalyzer') # this guy get messages within queue 

而且,你应该有结果的后端,你可以得到由任务ID每个任务的结果。

我想上面的技巧,很容易检查芹菜任务是如何进行的。

祝你好运:-)

相关问题