Сельдерей с Amazon SQS - PullRequest
       23

Сельдерей с Amazon SQS

50 голосов
/ 08 ноября 2011

Я хочу использовать Amazon SQS в качестве брокера с Сельдереем . Существует реализация транспорта SQS для Kombu , от которой зависит Celery. Однако документации для его использования недостаточно, поэтому я не могу найти, как настроить SQS на Celery. Есть кто-то, кому удалось настроить SQS на Celery?

Ответы [ 5 ]

60 голосов
/ 20 декабря 2011

Я сталкивался с этим вопросом несколько раз, но все еще не был полностью уверен, как настроить 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

Это позволяет обойти предполагаемую проблему с анализатором URL, которая не допускает прямой косой черты в вашем секрете API, что, по-видимому, является довольно распространенным явлением в AWS. Поскольку информации о данной теме еще не было, я также написал небольшое сообщение в блоге на эту тему:

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

30 голосов
/ 29 января 2013

Я использую Celery 3.0 и получаю предупреждения об устаревании при запуске работника с настройками BROKER_USER / BROKER_PASSWORD.

Я посмотрел на разбор URL SQS в kombo.utils.url._parse_url, и он вызывает urllib.unquote для элементов имени пользователя и пароля в URL.

Итак, чтобы обойти проблему секретных ключей с косой чертой, я смог успешно использовать следующее для BROKER_URL:

import urllib
BROKER_URL = 'sqs://%s:%s@' % (urllib.quote(AWS_ACCESS_KEY_ID, safe=''),
                               urllib.quote(AWS_SECRET_ACCESS_KEY, safe=''))

Я не уверен, могут ли когда-нибудь иметь ключи доступа косые черты, но это также не помешает процитировать их.

2 голосов
/ 14 декабря 2011

Для любого, кто наткнулся на этот вопрос, я смог заставить Celery работать из коробки с SQS (исправление не требуется), но мне нужно было обновить его до последних версий Celery и Kombu, чтобы это работало (1.4.5 и 1.5.1 на данный момент). Используйте строки конфигурации выше, и это должно работать (хотя вы, вероятно, захотите изменить регион по умолчанию).

* 1002. Просто продолжайте генерировать новые секреты, пока не получите один без слеш.
2 голосов
/ 15 ноября 2011

Никто не ответил об этом. В любом случае я пытался настроить Celery с Amazon SQS, и, похоже, я добился небольшого успеха.

Kombu должен быть исправлен для этого, поэтому я написал несколько исправлений, и есть также мой запрос на получение . Вы можете настроить Amazon SQS, установив схему BROKER_URL из sqs:// в Celery на исправленной Kombu. Например:

BROKER_URL = 'sqs://AWS_ACCESS:AWS_SECRET@:80//'
BROKER_TRANSPORT_OPTIONS = {
    'region': 'ap-northeast-1',
    'sdb_persistence': False
}
0 голосов
/ 09 ноября 2017

Я регенерировал учетные данные в консолье IAM, пока не получил ключ без косой черты (/).Проблемы с синтаксическим анализом связаны только с этим символом, поэтому, если у вашего секрета его нет, у вас все будет в порядке.

Не самое ужасно элегантное решение, но определенно сохраняет код в чистоте от хаков.

...