56 votes

Le céleri avec Amazon SQS

Je veux utiliser Amazon SQS en tant que courtier soutenu de Céleri. Il y a la SQS transport mise en œuvre pour le Kombu, qui Céleri dépend. Cependant il n'y a pas assez de documentation pour l'utiliser, donc je ne trouve pas comment configurer SQS sur le Céleri. Est-il quelqu'un qui avait réussi à configurer SQS sur le Céleri?

62voto

tobias.mcnulty Points 786

Je suis tombé sur cette question à plusieurs reprises, mais n'était toujours pas entièrement sûr de savoir comment le programme d'installation de Céleri à travailler avec SQS. Il s'avère que c'est assez facile avec les dernières versions de Kombu et le Céleri. Comme une alternative à la BROKER_URL syntaxe mentionné dans une autre réponse, vous pouvez simplement définir le transport, les options d'utilisateur et le mot de passe de la sorte:

BROKER_TRANSPORT = 'sqs'
BROKER_TRANSPORT_OPTIONS = {
    'region': 'us-east-1',
}
BROKER_USER = AWS_ACCESS_KEY_ID
BROKER_PASSWORD = AWS_SECRET_ACCESS_KEY

C'est un soi-disant problème avec l'URL de l'analyseur qui ne permet pas de barres obliques dans votre API secret, qui semble être assez souvent avec AWS. Depuis, il ne semble pas être une mine d'information sur le sujet encore, j'ai aussi écrit un court article de blog sur le sujet ici:

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

31voto

CalloRico Points 630

Je suis l'aide de Céleri 3.0, et a été l'obtention de la dépréciation des avertissements lors du lancement de l'ouvrier avec le BROKER_USER / BROKER_PASSWORD paramètres.

J'ai pris un coup d'oeil à la SQS pour analyser les URL de kombo.utils.url._parse_url et c'est l'appel de urllib.vulgaire sur le nom d'utilisateur et le mot de passe éléments de l'URL.

Donc, pour contourner le problème de clés secrètes avec des barres obliques, j'ai été en mesure d'utiliser avec succès pour le BROKER_URL:

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

Je ne suis pas sûr si les touches d'accès peuvent jamais avoir obliques en eux, mais il ne fait pas de mal de le citer en tant que bien.

2voto

minhee Points 1345

Personne n'a répondu à ce sujet. De toute façon, j'ai essayé de configurer le Céleri avec Amazon SQS, et il semble que j'ai obtenu un petit succès.

Le Kombu doit être patché pour cela, j'ai donc écrit quelques patchs et il est mon pull request ainsi. Vous pouvez configurer Amazon SQS en définissant BROKER_URL de sqs:// régime de Céleri sur le correctif Kombu. Par exemple:

BROKER_URL = 'sqs://AWS_ACCESS:AWS_SECRET@:80//'
BROKER_TRANSPORT_OPTIONS = {
    'region': 'ap-northeast-1',
    'sdb_persistence': False
}

2voto

nitwit Points 701

Pour n'importe qui tombent sur cette question, j'ai été en mesure d'obtenir le Céleri travail out-of-the-box avec SQS (pas de correctifs requis), mais je n'ai besoin de mettre à jour vers les dernières versions de Céleri et le Kombu pour que cela fonctionne (1.4.5 et 1.5.1 dès à présent). Utiliser les config les lignes ci-dessus et il devrait fonctionner (bien que vous aurez probablement envie de changer de la région par défaut).

Gotcha: pour utiliser le format de l'URL ci-dessus, vous devez vous assurer que votre AWS secret ne contient pas de barres obliques, comme cela confond l'URL de l'analyseur. Il suffit de garder en générant de nouveaux secrets jusqu'à ce que vous en obtenir un sans barre oblique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X