目錄
- 1.Celery介紹
- 2.Celery架構
-
- Producer(任務生産者)
- Celery Beat(任務排程器)
- Broker(消息代理)
- Workers(任務消費者)
- Result Stores / backend
1.Celery介紹
官方文檔:https://www.celerycn.io/ru-men/celery-jian-jie
源碼位址:https://github.com/celery
Celery是一個分布式隊列的管理工具,可以用 Celery 提供的接口快速實作并管理一個分布式的任務隊列。Celery支援多語言,它本身用 Python 實作,但它提供了其他常見語言的接口支援。
2.Celery架構
Celery Beat : 任務排程器. Beat 程序會讀取配置檔案的内容, 周期性的将配置中到期需要執行的任務發送給任務隊列.
Celery Worker : 執行任務的消費者,
Broker : 消息代理, 隊列本身. 也稱為消息中間件. 接受任務生産者發送過來的任務消息, 存進隊列再按序分發給任務消費方(通常是消息隊列或者資料庫).
Producer : 任務生産者. 調用 Celery API , 函數或者裝飾器, 而産生任務并交給任務隊列處理的都是任務生産者.
Result Backend : 任務處理完成之後儲存狀态資訊和結果, 以供查詢.
Producer(任務生産者)
任務生産者:調用了Celery提供的API、函數或者裝飾器而産生任務并交給任務隊列處理的都是任務生産者。
Celery Beat(任務排程器)
任務排程器:Beat程序會讀取配置檔案的内容,周期性地将配置中到期需要執行的任務發送給任務隊列。
Broker(消息代理)
消息代理, 隊列本身. 也稱為消息中間件. 接受任務生産者發送過來的任務消息, 存進隊列再按序分發給任務消費方(通常是消息隊列或者資料庫)。常見的 brokers 有 rabbitmq、redis、Zookeeper 等。
Workers(任務消費者)
執行任務的消費者,類似與生産/消費模型中的消費者,其從隊列中取出任務并執行。通常會在多台伺服器運作多個消費者, 提高運作效率。
Result Stores / backend
隊列中的任務運作完之後,儲存結果和狀态資訊, 以供查詢。
常見的 backend 有 redis、Memcached 甚至常用的資料都可以。
在用戶端和消費者之間傳輸資料需要序列化和反序列化。 Celery 支出的序列化方案如下所示:
參考文檔:
https://blog.csdn.net/cuomer/article/details/81214438
https://blog.csdn.net/happyanger6/article/details/51793490