为啥 CeleryCAM 不能与 Amazon SQS 一起使用?
Posted
技术标签:
【中文标题】为啥 CeleryCAM 不能与 Amazon SQS 一起使用?【英文标题】:Why doesn't CeleryCAM work with Amazon SQS?为什么 CeleryCAM 不能与 Amazon SQS 一起使用? 【发布时间】:2012-02-03 10:07:48 【问题描述】:我正在使用 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 日志中没有看到任何错误。
任何关于问题可能是什么或如何进一步调试的建议将不胜感激。
【问题讨论】:
我还没有找到任何结论性的东西,所以我进行了一些测试,看看哪些后端实际上支持 celerycam。使 celerycam 工作的关键是向 celeryd 发送 -E(事件发送)。在一个简短的测试中,似乎事件发送适用于 RabbitMQ(当然),适用于 Redis,不适用于 SQS,也不适用于 Celery 的 Django 数据库后端。 这个还有什么好运气吗?我正在尝试构建一个基于 Celery/SQS 的系统并遇到同样的问题。 【参考方案1】:SQS 是 AMQP 总线的有限实现。据我了解,它不像 rabbit-MQ 那样支持 PUB/SUB 广播,这是事件正常工作所必需的。 SNS 是用来支持广播的,但它是一个单独的系统。
一些库/包使用 SimpleDB 作为消息模型存储,作为 SQS 之上的 hack,以模拟正确的 AMQP 行为,但显然 celery 还没有完整的 hack。
【讨论】:
以上是关于为啥 CeleryCAM 不能与 Amazon SQS 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我应该使用 Amazon Kinesis 而不是 SNS-SQS?
Angular + amazon-cognito-identity-js,为啥我收到错误:未定义全局