2014-09-11 22 views
5
  1. Non so se sia a bug o un problema di configurazione.
  2. Obiettivo: debug/modificare attività di sedano senza lavoratore riavviare manualmente ogni volta che faccio un piccolo cambiamento

sedano Così ho configurato + RabbitMQ. Tutto funziona.Celery non funziona con RabbitMQ con l'opzione "--autoreload"

Aggiunto --autoreload opzione per il comando celery -A proj worker --loglevel=debug e la registrazione si ferma su questo:

[2014-09-11 19:22:00,447: DEBUG/MainProcess] | Worker: Hub.register Autoreloader... 

Senza di essa:

[2014-09-11 19:37:34,316: DEBUG/MainProcess] | Worker: Hub.register Pool... 
[2014-09-11 19:37:34,317: DEBUG/MainProcess] basic.qos: prefetch_count->16 
[2014-09-11 19:37:36,275: DEBUG/MainProcess] pidbox received method enable_events() [reply_to:None ticket:None] 
[2014-09-11 19:37:36,275: INFO/MainProcess] Events of group {task} enabled by remote. 

Tutto il resto funziona bene. RabbitMQ riceve un messaggio dopo

celery call tasks.update 

Ci sono collegamenti da Sedano. Semplicemente non dice a Celery di iniziare un compito.

Sembra un problema di connessione, ma non so cosa sia.
Se puoi aiutarci scrivici.

risposta

1

C'è un bug nel sedano alla linea sedano/lavoratore/autoreload.py 67

Questa correzione bug è stato impegnato da padroneggiare: https://github.com/pashinin/celery/commit/92b52db6eeeb75494700ffe807ecd4c1fe6b0643

è possibile correggere la libreria cambiando la linea 67 del autoreload. py da

for chunk in iter(lambda: f.read(2 ** 20), ''): 

a

for chunk in iter(lambda: f.read(2 ** 20), b''): 

Af In questo cambiamento, potresti ancora affrontare un altro problema: se hai già creato un'attività, NON verrà ricreata e quell'attività non verrà aggiornata dopo il ricaricamento del modulo. Le attività ricaricate diventano attive solo dopo averle eseguite ancora una volta.

Gli sviluppatori di Celery non sembrano disposti a risolvere il problema nella fase iniziale. Fino ad allora hai due opzioni:

  1. L'attività aggiornata deve essere eseguita prima che ne venga prelevata una nuova.

  2. Riavviare il lavoratore sedano dopo un compito in fase di aggiornamento

Problemi correlati