【问题标题】:SQS with Celery configuration带有 Celery 配置的 SQS
【发布时间】:2012-12-01 17:36:09
【问题描述】:

我正在尝试为 Celery 设置 Amazon SQS,并且我有以下配置:

BROKER_BACKEND = "SQS"
BROKER_TRANSPORT_OPTIONS = {
    'region': 'us-east-1',
}
AWS_ACCESS_KEY_ID = # access id
AWS_SECRET_ACCESS_KEY = # secret access key
os.environ.setdefault("AWS_ACCESS_KEY_ID", AWS_ACCESS_KEY_ID)
os.environ.setdefault("AWS_SECRET_ACCESS_KEY", AWS_SECRET_ACCESS_KEY)

BROKER_URL = 'sqs://'

CELERY_IMPORTS = ("tasks", )
CELERY_TASK_RESULT_EXPIRES = 300

CELERY_DEFAULT_QUEUE = #queue name
CELERY_DEFAULT_EXCHANGE = CELERY_DEFAULT_QUEUE
CELERY_DEFAULT_EXCHANGE_TYPE = CELERY_DEFAULT_QUEUE
CELERY_DEFAULT_ROUTING_KEY = CELERY_DEFAULT_QUEUE
CELERY_QUEUES = {
    CELERY_DEFAULT_QUEUE: {
        'exchange': CELERY_DEFAULT_QUEUE,
        'binding_key': CELERY_DEFAULT_QUEUE,
    }
}

在我对 AWS 账户的 SQS 配置中,我有一个队列,其名称写为 CELERY_DEFAULT_QUEUE。当我在本地运行它时,一切正常……但由于某种原因,它在 SQS 上创建了另一个队列,名称格式为 <user_id>-celery-pidbox。像这样的东西:MyUser-MacBook-Pro-local-celery-pidbox。

这正常吗?当我创建了一个指定名称的队列时,为什么还要创建另一个队列?否则,它的工作,不确定是否需要其他队列或我错过了什么?感谢任何帮助,我在文档中找不到这个。

编辑

原来这是正常的。出于某种原因,django-celery 会这样做,它会为您访问要访问的队列的每个盒子创建一个队列。他们将在未来的版本中解决此问题。如果有人知道如何临时解决这个问题,请告诉我,谢谢!

【问题讨论】:

  • 您对如何解决这个问题有任何更新吗?

标签: python django celery


【解决方案1】:

这实际上是一种很好的行为,因此您可以监控哪些实例(IP 或本地名称)正在访问您的 SQS 帐户。这只是一个请求,因此不会花费您任何费用。

【讨论】:

  • 您确定有一个请求吗?看起来它一直在轮询它(=浪费钱)。
  • 一个缺点是它需要完全的 SQS 访问权限。
【解决方案2】:

你需要设置这些:

 CELERY_ENABLE_REMOTE_CONTROL = False 
 CELERY_SEND_EVENTS = False

禁用它。

【讨论】:

    猜你喜欢
    • 2011-12-24
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 2022-08-03
    • 2018-08-01
    • 2018-11-29
    • 2017-04-17
    相关资源
    最近更新 更多