为什么CeleryCAM不能与Amazon SQS配合使用?

30
我正在使用Celery 2.4.6和django-celery 2.4.2。
当我按照这个问题的解决方案配置Celery来使用Amazon SQS时:Celery with Amazon SQS 我在Django管理页面的celerycam表中看不到任何内容。如果我切换回RabbitMQ,任务就会再次出现。
我在SQS中有很多(现在有40个以上)队列,名称类似于“celeryev-92e068c4-9390-4c97-bc1d-13fd6e309e19”,它们看起来可能是相关的(一些旧的甚至有事件),但在数据库中没有任何显示,并且在celerycam日志中也没有错误。
非常感谢您提供关于该问题可能是什么或如何进一步调试的建议。

6
我还没有找到任何确定性的证据,因此我进行了一些测试,以查看哪些后端实际上支持celerycam。让celerycam工作的关键是向celeryd发送事件的-E选项。在简短的测试中,似乎使用RabbitMQ(当然)、Redis可行,但使用SQS和Django数据库后端不可行。 - tobias.mcnulty
2
这个问题有进展了吗?我正在尝试构建一个基于Celery/SQS的系统,但遇到了同样的问题。 - edub
1个回答

3

SQS是AMQP总线的有限实现。据我所知,它不像Rabbit-MQ那样支持PUB/SUB广播,这对事件正常工作是必要的。 SNS是为了支持广播而设置的,但它是一个单独的系统。

一些库/软件包正在使用SimpleDB作为消息模型存储,作为在SQS上模拟适当的AMQP行为的hack,但显然celery尚未完全实现这种hack。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接