2011-06-27 15 views
7

Sto iniziando con Celery per un progetto Django. Per scopi di sviluppo locale l'ho impostato con djcelery e djkombu (trasporto del database), secondo queste istruzioni http://ask.github.com/celery/tutorials/otherqueues.html#django-database ma pianifico di utilizzare rabbitmq sul server di produzione.Come diagnosticare i lavoratori di Celery che si bloccano

Ho trovato che funziona ma che uno o più lavoratori si bloccherebbero casualmente. Gli addetti dipendono da compiti diversi, quindi non è un caso che un particolare compito stia entrando in un ciclo infinito. Quando provo a chiudere il sedano, nel registro di solito vedo tutti gli operai che escono tranne uno. Sia prima che dopo che un lavoratore si blocca, ho provato ad usare celeryctl per ottenere informazioni sui lavoratori, ma il sistema celeryctl fallisce sempre con un messaggio "Errore: nessun nodo ha risposto entro il limite di tempo." ". Ho anche provato a ispezionare i lavoratori http://docs.celeryproject.org/en/latest/userguide/workers.html#inspecting-workers ma tutti i metodi non restituiscono nulla.

Qualche idea su come diagnosticare cosa sta causando l'impiccagione dell'operatore o sarebbe utile.

+0

Prima sedano corsa sulle coperture con il livello DEBUG DEBUG celeryd -l. Quando si riavvia il sedano o lo si interrompe, il Poolworker che sta eseguendo un'attività non viene riavviato fino al termine dell'attività, si tratta di un comportamento normale. Fuori rotta non è normale che i tuoi compiti siano bloccati casualmente. Questo non mi è mai successo con Rabbit MQ, può essere possibile che si tratti di db locks o di connessione .. Stai usando InksDown di MySQL? Aniway suggerisco fortemente un broker invece del trasporto db –

+0

Quale versione stai correndo? – asksol

risposta

1

Avevo lo stesso problema. Penso che questo sia dovuto al fatto che stai utilizzando ghettoq che non supporta eventi.

Ai sensi di chiedere:

remote control commands (broadcast) and events does not work with ghettoq.

Problemi correlati