簡體   English   中英

使用 Celery 和 RabbitMQ 作為代理與僅使用 RabbitMQ + Pika 進行異步任務,使用一個優於另一個的優勢

[英]Using Celery with RabbitMQ as broker vs using just RabbitMQ + Pika for async tasks, advantages of using one over another

我目前的爭論是我們應該堅持使用 Pika 實現 RabbitMQ 還是轉向 celery,如果我們使用 Celery 有什么優勢。 據我了解,Celery 是一個分布式作業隊列,簡化了任務分發的管理。 它使用代理(RabbitMQ、Redis 等)在客戶端和工作人員之間發送和接收消息,它也可以選擇使用 Redis 等后端來存儲結果。 RabbitMQ 是一個消息隊列,可用於以異步方式執行作業。 最終,如果我們使用 RabbitMQ 並在 python 中使用 Pika 實現它,它將執行相同的作業,即在后台執行長時間運行的進程。

我在使用 Celery 時看到的幾個優點是:

  • 可以使用后端(例如redis)存儲每個任務的結果。
  • 更容易實施。
  • 還允許添加重試。
  • 是一個分布式作業隊列,可以在多個節點/集群上運行。
  • 像花這樣的包可以用來監控每個任務、它們的狀態、結果、花費的時間和其他一些元數據。
  • 任務鏈

但另一方面,它似乎確實限制了我們使用 RabbitMQ 的一些特性,並且它也有一些限制,比如它會與代理同步連接(github 上的問題https://github.com/celery/celery/issues/ 3884 )我很熟悉這個問題,這里已經問過為什么使用 Celery 而不是 RabbitMQ? 但似乎並不清楚。

任何幫助將不勝感激。

嗯...在我看來,您在這里比較的是蚊子和大象。 RabbitMQ+Pika不能替代Celery。 但是,RabbitMQ+Pika 可以幫助您實現(小型)服務,例如 Celery,如果這確實是您想要的。

如果您使用 RabbitMQ 作為后端, Celery (實際上是kombu )將使用類似於 Pika 的東西 - celery amqp項目,與代理進行通信。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM