Dalla mia comprensione, Celery è una coda di attività distribuita, il che significa che l'unica cosa che dovrebbe fare è inviare attività/lavori ad altri server e ottenere il risultato. RabbitMQ è una coda di messaggi e nient'altro. Tuttavia, un lavoratore può semplicemente ascoltare l'MQ ed eseguire l'attività quando viene ricevuto un messaggio. Ciò consente di ottenere esattamente ciò che offre Celery, quindi perché è necessario il Celery?Perché utilizzare Celery anziché RabbitMQ?
risposta
Hai ragione, non hai bisogno del Celery. Quando si progetta un sistema distribuito ci sono molte opzioni e non esiste un modo giusto per fare cose che si adattino a tutte le situazioni.
Molte persone scoprono che è più flessibile avere pool di consumatori di messaggi in attesa che un messaggio venga visualizzato in coda, facendo un po 'di lavoro e inviando un messaggio quando il lavoro è finito.
Celery è un framework che racchiude un sacco di cose in un pacchetto ma se non si ha realmente bisogno dell'intero pacchetto, allora è meglio impostare RabbitMQ e implementare ciò di cui si ha bisogno senza la complessità. Inoltre, RabbitMQ può essere utilizzato in molti altri scenari oltre allo scenario della coda di attività implementato da Celery.
Ma se scegli Celery, pensa due volte a RabbitMQ. Il modello di accodamento dei messaggi di Celery è semplicistico ed è davvero più adatto per qualcosa come Redis che per RabbitMQ. Rabbit ha una ricca serie di opzioni che Celery fondamentalmente ignora.
Celery fornisce fondamentalmente un'interfaccia piacevole per fare solo quello che hai detto e si occupa di tutte le configurazioni per te. Sì, potresti farlo a mano, ma dovresti solo riscrivere il sedano.
C'è anche l'elemento operazioni. Enormi parti di Celery sono lì per affidabilità (ad esempio non si blocca quando una particolare eccezione è serializzata, ecc.) E per la gestione dei lavoratori e dei cluster di lavoratori. – asksol
- 1. Prenota per Django + Celery + RabbitMQ?
- 2. Perché utilizzare AMQP/ZeroMQ/RabbitMQ
- 3. Celery broadcast vs RabbitMQ fanout
- 4. django-celery senza un server amqp (rabbitmq)
- 5. Perché utilizzare Function.prototype.bind anziché Function.prototype.call?
- 6. Perché utilizzare GWT.create() anziché nuovo?
- 7. Perché utilizzare AsQueryable() anziché List()?
- 8. Perché utilizzare singleton anziché statico?
- 9. Perché utilizzare enum anziché costanti?
- 10. Perché utilizzare typedef anziché #defines?
- 11. Celery/RabbitMQ messaggi non bloccati che bloccano la coda?
- 12. C'è un modo per rendere persistente Celery/RabbitMQ?
- 13. Celery non funziona con RabbitMQ con l'opzione "--autoreload"
- 14. Recupero della lunghezza della coda con Celery (RabbitMQ, Django)
- 15. I compiti di Celery con eta vengono rimossi da RabbitMQ
- 16. Perché utilizzare TimeSpan.CompareTo() anziché < > o =
- 17. Perché/Quando utilizzare (!! p) anziché (p! = NULL)
- 18. Perché utilizzare registerDefaults: anziché setValue: forKey :?
- 19. Perché utilizzare rbegin() anziché end() - 1?
- 20. Perché utilizzare il log $ angular anziché console.log?
- 21. Android: perché utilizzare getBaseContext() anziché questo
- 22. Perché utilizzare un metodo Create anziché utilizzare "nuovo"?
- 23. Coda temporanea in Celery
- 24. Celery non restituisce risultati
- 25. RabbitMQ portatile su Windows?
- 26. Quando utilizzare ImageButton anziché ImageView?
- 27. Quando utilizzare UICollectionView anziché UITableView?
- 28. Perché dovrei utilizzare il modello di threading "Both" anziché "Free"?
- 29. Perché utilizzare lambda anziché la corrispondenza del modello?
- 30. Perché utilizzare sys.path.append (percorso) anziché sys.path.insert (1, percorso)?
"Rabbit ha una ricca serie di opzioni che Celery fondamentalmente ignora". È vero, ma un po 'fuorviante. Ad esempio, puoi impostare le regole di routing nel livello Rabbit che non sono controllate da Celery, ma influenzano il routing e il consumo delle attività di Celery. È un problema di progettazione se si desidera che il routing venga gestito dal chiamante, da un router personalizzato Celery o dal meccanismo di scambio. È vero che quelle Confezioni di Conigli possono essere "invisibili" a Celery ma ciò non significa che non abbiano un effetto utile. –