2012-01-05 13 views
30

Sto usando Celery 2.4.6 e django-celery 2.4.2.Perché CeleryCAM non funziona con Amazon SQS?

Quando configuro sedano utilizzare Amazon SQS per la risoluzione su questa questione: Celery with Amazon SQS

non vedo nulla nella tabella celerycam in admin Django. Se torno a RabbitMQ, le attività riprendono a essere visualizzate.

Ho molte (ora 40+) code in SQS denominate in questo modo: "celeryev-92e068c4-9390-4c97-bc1d-13fd6e309e19", che sembrano essere correlate (alcune delle più vecchie hanno anche un evento in loro), ma non compare nulla nel database e non vedo errori nel registro di Celerycam.

Qualsiasi suggerimento su quale potrebbe essere il problema o su come eseguire il debug di questo ulteriore sarebbe molto apprezzato.

+6

Non ho trovato nulla di conclusivo su questo, quindi ho eseguito alcuni test per vedere quali backend effettivamente supportano Celerycam. La chiave per far funzionare Celerycam è la -E (invio di eventi) a Celeryd. In un breve test, sembra che l'invio di eventi funziona con RabbitMQ (ovviamente), funziona con Redis, NON funziona con SQS e NON funziona con il backend del database Django per Celery. –

+2

Qualche ulteriore fortuna con questo? Sto tentando di costruire un sistema basato su Celery/SQS e di affrontare lo stesso problema. – edub

risposta

3

SQS è un'implementazione limitata di un bus AMQP. A quanto ho capito, non supporta le trasmissioni PUB/SUB come ad esempio il coniglio-MQ, che è necessario affinché gli eventi funzionino correttamente. SNS è stato creato per supportare la trasmissione, ma è un sistema separato.

Alcune librerie/pacchetti là fuori usano SimpleDB come archivio di modelli di messaggistica come un hack su SQS per emulare il comportamento AMQP corretto, ma apparentemente il sedano non ha ancora un attacco completo.