当我使用芹菜组和连锁店安排如下任务时
re.sub(r'\d+' ,'', x)
组任务可以在许多工作程序中执行,在所有组任务完成后,sum_task开始执行(可能在其他工作程序中),所以 谁能告诉我celery知道组任务是如何完成的,然后启动了sum_task?
答案 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获得每个任务结果。
我认为,根据上述技巧,可以很容易地检查芹菜任务的进展情况。
祝你好运: - )