我有一个关于芹菜chord队列选择的问题。
我使用celery 4.1、python 2.7.10和rabbitmq 3.5.4作为代理。
我一开始的目的是获取队列中有多少chord任务处于挂起状态。
因此,我将链任务和chord回调任务划分到不同的队列中,并可以从回调队列深度中获得挂起的任务数。
下面是代码片段:
@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))因此,analyze_atom被调度到队列"atom“,而任务summary_up被调度到队列"summary”。
现在问题来了,当我在图像中使用两个元素调用chord时,预期的结果是"atom“中的两个analyze_atom任务和”summary_up“中的一个摘要任务,嗯?
我使用rabbitmq管理来检查队列,但是,我只在atom中发现两个任务,而在摘要队列中什么也没有,并且,即使整个chord任务成功完成,“摘要”队列也始终为0。
我不知道summary_up任务被安排在哪里?
有人知道chord任务是如何选择队列的吗?
谢谢。
韦斯利
发布于 2018-03-26 19:43:48
我以前遇到过队列问题,请尝试将您的代码更改为
chord(analyze_atom.s([image]).set(queue="atom") for image in images)(summary_up.s(studentuid, images).set(queue="summary"))https://stackoverflow.com/questions/46023997
复制相似问题