Ho richiamato un'attività che recupera alcune informazioni in remoto con urllib2 alcune migliaia di volte. Le attività sono pianificate con un eta casuale (entro una settimana) in modo che non colpiscano il server contemporaneamente. A volte ottengo un 404, a volte no. Sto gestendo l'errore nel caso in cui ciò accada.Celery/RabbitMQ messaggi non bloccati che bloccano la coda?
Nella console RabbitMQ posso vedere 16 messaggi non riconosciuti:
ho smesso di sedano, epurato la coda e riavviato esso. I 16 messaggi non riconosciuti erano ancora lì.
Ho altri compiti che vanno nella stessa coda e nessuno di essi è stato eseguito. Dopo lo spurgo, ho cercato di inviare un altro compito ed è stato rimane pronto:
Tutte le idee come posso scoprire perché messaggi rimangono non riconosciuti?
Versioni:
celery==3.1.4
{rabbit,"RabbitMQ","3.5.3"}
celeryapp.py
CELERYBEAT_SCHEDULE = {
'social_grabber': {
'task': '<django app>.tasks.task_social_grabber',
'schedule': crontab(hour=5, minute=0, day_of_week='sunday'),
},
}
tasks.py
@app.task
def task_social_grabber():
for user in users:
eta = randint(0, 60 * 60 * 24 * 7) #week in seconds
task_social_grabber_single.apply_async((user), countdown=eta)
Non esiste alcun instradamento per questa attività definita, quindi entra nella coda predefinita: sedano. C'è un lavoratore che elabora questa coda.
supervisord.conf:
[program:celery]
autostart = true
autorestart = true
command = celery worker -A <django app>.celeryapp:app --concurrency=3 -l INFO -n celery
Puoi pubblicare la tua configurazione di sedano, versione di sedano e versione di RabbitMQ? –
Fatto. Fammi sapere se hai bisogno di qualcos'altro. – kev