配置 Celery + AWS SQS 以撤销任务

问题描述

我在 AWS SQS 上运行 Celery+Kombu 4.4.6 并且想要撤销和终止任务。 通读文档和 SO 帖子,传输需要允许广播消息。 SQS 不做广播消息,而 Celery+Kombu 需要使用 SimpleDB。该选项在 1.x 版中很早就被关闭了。要启用它,需要将 support_fanout = True 添加到传输选项中。

但是仅添加该选项对我不起作用,我无法弄清楚我错过了什么。可能的选项有:

  • SimpleDB - 我什至不清楚如何启用 SimpleDB。我确实在 AWS 中看到过文档,但我不认为它是一项单独的服务。
  • 添加任何其他配置吗?
  • 简单地看一下 SQS 代码,似乎 SimpleDB 是唯一的选择。对吗?
  • 是否还有其他选项可以在 SQS 上启用任务撤销?

在我的 app.celery 中,我有

app = Celery('app',broker=''sqs://<Access key>:<secret key>@')),backend='cache+memcached://<host>:11211/')),)

在我的 app.settings 中,我有

CELERY_broKER_URL='sqs://<access key>:<secret key>@'))
CELERY_broKER_TRANSPORT_OPTIONS = {
    'region': '<region>','supports_fanout': True,}
CELERY_DEFAULT_QUEUE = 'app'
CELERY_DEFAULT_EXCHANGE = 'app'
CELERY_DEFAULT_ROUTING_KEY = 'app'

解决方法

我的最终解决方案是将 Amazon MQ 与 RabbitMQ 实例结合使用。 Amazon SimpleDB 似乎消失了,这使得 Celery+Kombu 中的任何支持都过时和损坏了。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...