Amazon-SQS + Django-Celery 创建了数千个队列(每条消息一个队列)
Posted
技术标签:
【中文标题】Amazon-SQS + Django-Celery 创建了数千个队列(每条消息一个队列)【英文标题】:Amazon-SQS + Django-Celery creates thousands of queues (a queue for every message) 【发布时间】:2012-05-24 05:31:10 【问题描述】:我正在寻找开始解决此问题的地方。
这是在 settings.py 中所做的更改
#Rabbit MQ settings
#===============================================================================
# BROKER_HOST = "localhost"
# BROKER_PORT = 5672
# BROKER_USER = "vei_0"
# BROKER_PASSWORD = "1234"
# BROKER_VHOST = "videoencoder"
#===============================================================================
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = "xxxx"
AWS_SECRET_ACCESS_KEY = "xxxx"
AWS_STORAGE_BUCKET_NAME = "images"
#Amazon SQS settings.
BROKER_TRANSPORT = 'sqs'
BROKER_TRANSPORT_OPTIONS =
'region': 'us-east-1',
BROKER_USER = AWS_ACCESS_KEY_ID
BROKER_PASSWORD = AWS_SECRET_ACCESS_KEY
CELERY_DEFAULT_QUEUE = 'hardwaretaskqueue'
CELERY_QUEUES =
CELERY_DEFAULT_QUEUE:
'exchange': CELERY_DEFAULT_QUEUE,
'binding_key': CELERY_DEFAULT_QUEUE,
CELERYD_CONCURRENCY = 2
CELERY_TASK_RESULT_EXPIRES = 120
CELERY_RESULT_BACKEND = "amqp"
我今天早上醒来,收到一条来自亚马逊的消息,上面写着“你的意思是要排队吗?”
【问题讨论】:
+1 来自亚马逊的有趣信息 :) 我的密钥确实有一个正斜杠。这可能是问题吗? 【参考方案1】:使用CELERY_RESULT_BACKEND = 'amqp'
时,会为每条结果消息创建一个新队列。为避免这种情况,您可以简单地使用另一个 CELERY_RESULT_BACKEND
,例如数据库或 Redis。或者如果您对结果不感兴趣,则可以设置CELERY_IGNORE_RESULT = True
。
【讨论】:
根据 AMQP 规范将队列创建为自动删除,但我无法告诉您 SQS 如何处理该标志的细节。以上是关于Amazon-SQS + Django-Celery 创建了数千个队列(每条消息一个队列)的主要内容,如果未能解决你的问题,请参考以下文章