gpt4 book ai didi

python-3.x - 如何使用 Amazon SQS 作为 Celery 代理,而不创建/列出队列?

转载 作者:行者123 更新时间:2023-12-04 03:57:12 27 4
gpt4 key购买 nike

对于一个项目,我的组织计划将 Celery 代理从 redis 转移到 SQS。有人可以指导我如何调整 Celery 设置,以便我可以使用预定义的 SQS 队列,而无需 celery 尝试创建/列出队列(因为我没有这些权限)。
我尝试了以下设置:

CELERY_BROKER_URL = 'sqs://'
CELERY_BROKER_TRANSPORT_OPTIONS = {
'predefined_queues':{
'MyQueue' : {
'url' : '<SQS Queue URL>',
}
}
}
CELERY_TASK_DEFAULT_QUEUE = 'MyQueue'
CELERY_ROUTES = {
'tasks.*':{
'queue' : 'MyQueue'
}
}
应用这些设置后,每当我尝试通过 celery 向 SQS 队列发送消息时,我仍然收到以下错误: An error occurred (AccessDenied) when calling the CreateQueue operation: Access to the resource https://queue.amazonaws.com/ is denied.为什么即使我已经通过了预定义队列设置, celery 仍然试图创建队列: https://docs.celeryproject.org/en/stable/getting-started/brokers/sqs.html#predefined-queues ?
提前致谢!

最佳答案

Celery worker 需要关联到一个允许 CreateQueue 操作的 IAM 角色。如果您的 Celery 工作线程在 EC2 实例上运行,那么最简单的做法是使用实​​例配置文件,并让实例角色能够执行 CreateQueue 操作。
即使我的公司是 AWS 的重度用户(实际上一切都在 AWS 上),我建议您在决定使用工作站上无法使用的 AWS 服务时三思而后行,而 SQS 就是这样一种服务。

关于python-3.x - 如何使用 Amazon SQS 作为 Celery 代理,而不创建/列出队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63667452/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com