芹菜与亚马逊SQS

min*_*hee 51 amazon-sqs amazon-web-services celery kombu

我想使用Amazon SQS作为Celery支持的经纪人.有关于Kombu的SQS传输实现,Celery依赖它.但是没有足够的文档来使用它,所以我找不到如何在Celery上配置SQS.是否有人成功在Celery上配置SQS?

tob*_*lty 60

我多次遇到这个问题,但仍不完全确定如何设置Celery与SQS一起使用.事实证明,使用最新版本的Kombu和Celery非常容易.作为另一个答案中提到的BROKER_URL语法的替代方法,您可以简单地设置传输,选项,用户和密码,如下所示:

BROKER_TRANSPORT = 'sqs'
BROKER_TRANSPORT_OPTIONS = {
    'region': 'us-east-1',
}
BROKER_USER = AWS_ACCESS_KEY_ID
BROKER_PASSWORD = AWS_SECRET_ACCESS_KEY
Run Code Online (Sandbox Code Playgroud)

这解决了URL解析器的一个声称问题,它不允许在您的API秘密中使用正斜杠,这似乎是AWS的常见情况.由于那里似乎没有关于这个主题的丰富信息,我还在这里写了一篇关于这个主题的简短博文:

http://www.caktusgroup.com/blog/2011/12/19/using-django-and-celery-amazon-sqs/

  • +1感谢您对此@tobias的工作.好的博客文章和评论中的讨论非常有用.让我们更新! (2认同)
  • 如果我们有多个 SQS 队列怎么办?我们如何告诉 python 使用哪个队列? (2认同)

Cal*_*ico 30

我正在使用Celery 3.0,并且在使用BROKER_USER/BROKER_PASSWORD设置启动worker时会收到弃用警告.

我查看了kombo.utils.url._parse_url中的SQS URL解析,并在URL的用户名和密码元素上调用urllib.unquote.

因此,为了解决带有正斜杠的密钥问题,我能够成功地将以下内容用于BROKER_URL:

import urllib
BROKER_URL = 'sqs://%s:%s@' % (urllib.quote(AWS_ACCESS_KEY_ID, safe=''),
                               urllib.quote(AWS_SECRET_ACCESS_KEY, safe=''))
Run Code Online (Sandbox Code Playgroud)

我不确定访问键是否可以在其中包含正斜杠,但引用它也没有什么坏处.

  • /sf/ask/2227890871/#31827113 对于 python 3 (2认同)