Domanda

Sto correndo a sedano come daemon, ma a volte ho difficoltà a fermarlo con grazia. Quando invii il segnale del termine e ci sono elementi in coda (in questo caso service celeryd stop) il sedelyd interromperà l'adozione di nuovi posti di lavoro e chiuderà tutti i processi dei lavoratori. Il processo genitore, tuttavia, non si spegne.

Ho appena corso in uno scenario in cui ho avuto il sedano in esecuzione su due macchine separate dei lavoratori: A e B. Con circa 1000 messaggi sul server RabbitMQ, ho chiuso a, ed ho sperimentato la situazione che ho spiegato sopra. B ha continuato a lavorare, ma poi si è bloccato con circa 40 messaggi rimasti sul server. Ero comunque, in grado di fermare correttamente B.

Ho riavviato B, per vedere se ci vorrebbero i 40 elementi dalla coda, ma non vorrebbe. Quindi, ho ucciso un duro, dopo di che B afferrato e completato i compiti.

Le mie conclusioni è che il processo genitore ha prenotato i 40 elementi dal nostro server RabbitMQ per i suoi figli. Raccogli i bambini correttamente, ma non rilascerà gli oggetti a Rabbitmq a meno che non lo uccisero manualmente.

Qualcuno ha sperimentato qualcosa di simile?

Sto eseguendo sedano 2.2.2

È stato utile?

Soluzione

I believe this is related to:

https://github.com/celery/celery/issues/264

Setting

CELERY_DISABLE_RATE_LIMITS = False

in your settings.py file should work.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top