HoLavoratore di sedano: come consumare da tutte le code?
- set
CELERY_CREATE_MISSING_QUEUES = True
- non definiti
CELERY_QUEUES
- definito
CELERY_DEFAULT_QUEUE = 'default'
(di tipo diretto) - una classe router personalizzato che crea percorsi al volo, come mostrato in questo biglietto (https://github.com/celery/celery/issues/150) .
Vedo che viene creata la nuova coda nel percorso restituito dal router personalizzato che presumo sia a causa di CELERY_CREATE_MISSING_QUEUES
.
Ora nel nodo operaio che ho eseguito, non passare l'argomento -Q
e consuma solo dalla coda di 'default' che sembra essere in linea con la documentazione -
Di default consumerà da tutte le code definite nell'impostazione CELERY_QUEUES (che, se non specificato, si imposta automaticamente nella coda con nome sedano).
C'è un modo per far sì che il mio nodo di lavoro consumi da TUTTE le code comprese quelle create dinamicamente?
Grazie,
Grazie. È stato interessante Sì, uso RabbitMQ e pensavo di avere sempre code dinamiche. Speravo di poter dire al lavoratore di consumare da tutte le code usando un qualche tipo di jolly. Ho intenzione di provare i tuoi suggerimenti ora. Domanda - Considerando che i lavoratori possono essere in esecuzione su server diversi, con il broker dei messaggi come unico elemento comune, in che modo app.control.add_consumer (...) comunica le informazioni ai lavoratori? – ksrini
@ksrini yeah Cercavo il codice sorgente per scoprire se è possibile utilizzare un modello jolly, ma il metodo che imposta le code da utilizzare richiede un elenco di code separate da virgole. E i comandi di controllo utilizzano il broker (RabbitMQ) per trasmettere i messaggi ai lavoratori, controllando il modulo 'celery.app.control'. – Pierre
l'approccio suggerito utilizzando il comando di controllo add_consumer ha funzionato! Grazie!Vorrei invocare add_consumer solo se i lavoratori non stanno già consumando da quella coda perché add_consumer sembra richiedere un po 'di tempo (circa 1-2 secondi) se reply = True e stavo pianificando di farlo dal router dove determino la nuova coda come parte del percorso. Se imposto reply = False, è più veloce. Vedi qualche problema con il richiamo di add_consumer anche se i lavoratori potrebbero già consumare da quella coda? – ksrini