Celery分布式任務佇列

2022-09-20 11:09:13 字數 930 閱讀 3324

celery是一款非常簡單,靈活, 可靠的分布式系統, 可用於處理大量訊息, 並且提供了一整套操作此系統的一系列工具

celery是一款訊息佇列工具, 可用於處理實時資料以及任務排程

什麼是任務佇列?

任務佇列一般用於執行緒或計算機之間分配工作的一種機制

任務佇列的輸入是乙個成為任務的工作單元, 有專門的職稱(worker)進行不斷的監視任務佇列, 進行執行新的任務工作。

celery通過訊息機制進行通訊, 通常使用中間人(broker)作為客戶端和職程(worker)調節。啟動乙個任務,客戶端向訊息傳送一條訊息,然後中間人(broker)將訊息傳遞給乙個職程(worker), 最後由職程(worker)進行執行中間人(broker)分配的任務。

celery可以有多個職程(worker)和中間人(broker), 用來提高celery的高可用性以及橫向擴充套件能力

我們需要什麼?

celery需要訊息中介軟體來進行傳送和接收訊息。rabbitmq和resid中間人的功能比較齊全,但也支援其他的實驗性的解決方案,其中包括sqlite進行本地開發

celery可以再一台機器上執行,也可以在多台機器上執行,甚至可以跨資料中心執行

高可用

如果出現丟失連線或連線失敗, 職程(worker)和客戶端會自動重試,並且中間人通過主/主 主/從的方式來進行提高可用性

快速

單個celery進行每分鐘可以處理數以百萬的任務,而且延遲僅為亞毫秒(使用rabbitmq,librabbitmq在優化過後).

靈活

celery的每個部分幾乎都可以自定義擴充套件和單獨使用,例如自定義連線池,序列化方式,壓縮方式,日誌記錄方式,任務排程,生產者,消費者,中間人(broker)等。

分布式任務佇列Celery

celery 芹菜 是基於python開發的分布式任務佇列。它支援使用任務佇列的方式在分布的機器 程序 執行緒上執行任務排程。基本用法是在程式裡引用celery,並將函式方法繫結到task from celery import celery def add x,y return x y from t...

Celery分布式任務佇列

celery是乙個簡單 靈活且可靠的,處理大量訊息的分布式系統 專注於實時處理的非同步任務佇列 同時也支援任務排程 celery的架構由三部分組成,訊息中介軟體 message broker 任務執行單元 worker 和任務執行結果儲存 task result store 組成。訊息中介軟體 ce...

關於Celery 分布式任務佇列

celery 是 distributed task queue,分布式任務佇列,分布式決定了可以有多個 worker 的存在,佇列表示其是非同步操作,即存在乙個產生任務提出需求的工頭,和一群等著被分配工作的碼農。在 python 中定義 celery 的時候,我們要引入 broker,中文翻譯過來就...