Sono appena iniziato con il sedano in un progetto Django, e sono piuttosto bloccato a questo particolare problema: Fondamentalmente, ho bisogno di distribuire un'attività a lungo termine a diversi lavoratori. L'attività è in realtà suddivisa in diversi passaggi, ognuno dei quali richiede molto tempo per essere completato. Pertanto, se qualche passaggio fallisce, vorrei che il sedano riprovasse questa attività usando lo stesso operatore per riutilizzare i risultati dei passaggi completati. Capisco che il sedano usi il routing per distribuire le attività su determinati server, ma non riesco a trovare nulla su questo particolare problema. Io uso RabbitMQ come mio broker.Come riprovare il sedano utilizzando lo stesso operatore?
6
A
risposta
11
Si potrebbe avere tutti i casi celeryd consumano da una coda che prende il nome il nome host del lavoratore:
celeryd -l info -n worker1.example.com -Q celery,worker1.example.com
imposta il nome dell'host per worker1.example.com
e consumerà da una coda di nome stesso, così come la coda di default (denominato celery
).
Poi per dirigere un compito di un lavoratore specifica è possibile utilizzare:
task.apply_async(args, kwargs, queue="worker1.example.com")
similmente a dirigere un nuovo tentativo:
task.retry(queue="worker1.example.com")
o per dirigere il nuovo tentativo per lo stesso lavoratore:
task.retry(queue=task.request.hostname)
Problemi correlati
- 1. Sovraccarico operatore multiplo C++ per lo stesso operatore
- 2. Aggiunta di funzioni lambda con lo stesso operatore in python
- 3. Ridefinire macro lattice utilizzando lo stesso nome
- 4. Utilizzando lo stesso nome argomento come parametro predefinito in ES6
- 5. progetti multi sedano con lo stesso RabbitMQ mediatore processo di backend
- 6. Come riprovare la transazione dopo un deadlock utilizzando Doctrine?
- 7. Riprovare le attività fallite di sedano che fanno parte di una catena
- 8. Come ottenere selezionato lo stesso operatore wifi dalla lista wifi ancora e ancora in Android?
- 9. interrogazione Hibernate HQL utilizzando come operatore
- 10. Importazione di due funzioni con lo stesso nome utilizzando roxygen2
- 11. Ruota UIImageView con lo stesso punto centrale utilizzando CGAffineTransformMakeRotation
- 12. Utilizzando una variabile con lo stesso nome in diversi spazi
- 13. Split una lista e ricongiungersi utilizzando lo stesso separatore
- 14. PHP utilizzando '&' operatore
- 15. R/quantmod: più grafici tutti utilizzando lo stesso asse Y
- 16. utilizzando i metodi di classe come attività di sedano
- 17. Il drools è lo stesso di jrules?
- 18. Redbean, Multiple many-to-many utilizzando lo stesso oggetto
- 19. Elimina file con lo stesso prefisso stringa utilizzando Java
- 20. Come implementare il timeout e riprovare per Restangular
- 21. Compilare lo stesso file con flag diversi utilizzando CMAKE
- 22. Test di più host con lo stesso test utilizzando serverspec
- 23. Utilizzando una variabile come un operatore
- 24. Rx fromPromise e riprovare
- 25. Come ottenere lo stesso indirizzo MAC?
- 26. Come sostituire lo stesso carattere più volte?
- 27. array Initialize utilizzando operatore ternario
- 28. Come riprovare per il link 404 non trovato in scrapy?
- 29. Riprovare/tentare quando fallisce
- 30. AssociationTypeMismatch per lo stesso modello
Grazie mille per la risposta! Penso che questo sia esattamente quello che sto cercando. Non mi sono reso conto che possiamo passare il nome della coda per riprovare(), ma ora ha molto senso :) – dangmai
'celeryd' ora è deprecato, usa' operatore di celery'. – user
Usa '% computername%' su windows e '\' hostname \ '' su linux per creare la riga di comando. – ubershmekel