celery 組件
Celery 扮演生產者和消費者的角色
Celery Beat : 任務調度器. Beat 進程會讀取配置文件的內容, 週期性的將配置中到期需要執行的任務發送給任務隊列.
Celery Worker : 執行任務的消費者, 通常會在多臺服務器運行多個消費者, 提高運行效率.
Broker : 消息代理, 隊列本身. 也稱爲消息中間件. 接受任務生產者發送過來的任務消息, 存進隊列再按序分發給任務消費方(通常是消息隊列或者數據庫).
Producer : 任務生產者. 調用 Celery API , 函數或者裝飾器, 而產生任務並交給任務隊列處理的都是任務生產者.
Result Backend : 任務處理完成之後保存狀態信息和結果, 以供查詢.
celery架構圖
產生任務的方式
- 發佈者發佈任務(WEB 應用)
- 任務調度按期發佈任務(定時任務)
celery 依賴三個庫: 這三個庫, 都由 Celery 的開發者開發和維護
- billiard : 基於 Python2.7 的 multisuprocessing 而改進的庫, 主要用來提高性能和穩定性.
- librabbitmp : C 語言實現的 Python 客戶端
- kombu : Celery 自帶的用來收發消息的庫, 提供了符合 Python 語言習慣的, 使用 AMQP 協議的高級接口.