從我的理解來看,Celery是一個分佈式任務隊列,這意味着它唯一應該做的就是將任務/作業分派給其他服務器並將結果返回。 RabbitMQ是一個消息隊列,僅此而已。但是,工作人員只能在收到消息時收聽MQ並執行任務。這實現了Celery所提供的功能,所以爲什麼需要Celery?爲什麼要用芹菜代替RabbitMQ?
32
A
回答
31
你是對的,你根本不需要芹菜。當你設計分佈式系統時,有很多選擇,沒有正確的方法去做適合所有情況的事情。
許多人發現消息消費者池等待消息出現在隊列中,做一些工作並在工作完成時發送消息會更靈活。
Celery是一個將一大堆東西封裝在一個包中的框架,但是如果你不需要整個包,那麼最好是設置RabbitMQ並且實現你所需要的而沒有任何複雜性。另外,除了Celery實現的任務隊列場景外,RabbitMQ還可以用於更多場景。
但是如果你確實選擇了芹菜,那麼再考慮一下RabbitMQ。 Celery的消息排隊模型非常簡單,它對於Redis而言比RabbitMQ更適合。兔子擁有豐富的選項,而芹菜基本上忽略了這些選項。
21
芹菜基本上提供了一個很好的界面來做你剛剛說的,併爲你處理所有的配置。是的,你可以親手做,但你只需重寫芹菜。
+5
還有操作元素。 Celery的巨大部分在於可靠性(例如,當特定的例外序列化等時不會崩潰),以及管理工作人員和工作人員羣。 – asksol 2012-01-31 12:21:51
相關問題
- 1. 芹菜和RabbitMQ有什麼關係?
- 2. Django芹菜與RabbitMQ
- 3. 爲什麼芹菜不會將任務發送到RabbitMQ?
- 4. Django與芹菜和RabbitMQ
- 5. 芹菜+ RabbitMQ的空隊列
- 6. Heroku,Django和芹菜在RabbitMQ
- 7. Docker上的芹菜+ rabbitmq
- 8. rabbitmq +芹菜內存泄漏?
- 9. 芹菜,芹菜,芹菜有什麼區別?
- 10. 芹菜工人什麼時候向RabbitMQ承認它有任務?
- 11. 爲什麼要用spyOn代替jasmine.createSpy?
- 12. 芹菜任務重試(芹菜,Django和RabbitMQ)
- 13. Django芹菜和多個數據庫(芹菜,Django和RabbitMQ)
- 14. 芹菜任務計劃(芹菜,Django和RabbitMQ)
- 15. 爲什麼要使用AMQP/ZeroMQ/RabbitMQ
- 16. 芹菜爲什麼不啓動?
- 17. 芹菜部分是什麼?
- 18. 使用芹菜作爲Logstash的簡單替代方案
- 19. 芹菜在Django(RabbitMQ與Django數據庫)
- 20. 芹菜手動存儲結果在rabbitmq
- 21. Jobtastic /芹菜/ RabbitMQ - AsyncResult總是等待
- 22. 芹菜失去與RabbitMQ的聯繫
- 23. Django + RabbitMQ +芹菜。不從的觀點
- 24. 芹菜:無法連接到rabbitmq
- 25. 在芹菜/ rabbitmq查看郵件
- 26. RabbitMQ和芹菜多服務器環境
- 27. 爲什麼用'$'代替'。'?
- 28. 爲每個芹菜任務創建新的RabbitMQ隊列
- 29. 爲什麼芹菜使用輪詢Redis的經紀人?
- 30. 什麼是django芹菜(djcelery)表?
「兔子有一套豐富的選項,西芹基本上忽略了」。這是事實,但有點誤導。例如,您可以在Rabbit層設置不受Celery控制的路由規則,但會影響Celery任務的路由和使用。這是一個設計問題,無論您是希望路由由調用者,Celery自定義路由器還是交換機制來處理。確實,這些兔子配置可以對Celery「隱形」,但這並不意味着它們沒有有用的效果。 – 2013-08-26 19:05:20