天天看點

Python分布式架構Celery的簡介與使用1.Celery介紹2.Celery架構

目錄

  • 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架構

Python分布式架構Celery的簡介與使用1.Celery介紹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 支出的序列化方案如下所示:

Python分布式架構Celery的簡介與使用1.Celery介紹2.Celery架構

參考文檔:

https://blog.csdn.net/cuomer/article/details/81214438

https://blog.csdn.net/happyanger6/article/details/51793490