谁能解释一下芹菜组是如何工作的?

时间:2017-09-12 09:44:24

标签: python celery

当我使用芹菜组和连锁店安排如下任务时

re.sub(r'\d+' ,'', x)

组任务可以在许多工作程序中执行,在所有组任务完成后,sum_task开始执行(可能在其他工作程序中),所以 谁能告诉我celery知道组任务是如何完成的,然后启动了sum_task?

1 个答案:

答案 0 :(得分:1)

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

Snippet like:

@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获得每个任务结果。

我认为,根据上述技巧,可以很容易地检查芹菜任务的进展情况。

祝你好运: - )