第一章 Celery簡介
1、Celery是什么
1、Celery是python中使用比較多的並行分布式框架
2、Celery是一個簡單、靈活且可靠的,處理大量消息的分布式系統
3、Celery專注於實時處理的異步任務隊列
4、Celery同時也支持任務調度
2、Celery使用場景
celery是一個強大的分布式任務隊列的異步處理框架,它可以讓任務的執行完全脫離主程序,甚至可以被分配到其他主機上運行。我們通常使用它來實現異步任務(async task)和定時任務(crontab)。
- 異步任務: 將耗時操作任務提交給Celery去異步執行,比如發送短信/郵件、消息推送、音視頻處理等等
- 定時任務: 定時執行某件事情,比如每天數據統計
3 、Celery工作流程
4、Celery核心組件
Celery的架構由三部分組成,消息中間件(Broker),任務執行單元(Worker)和任務執行結果存儲(Result)組成。
- 消息中間件(Broker)
Broker負責創建任務隊列,根據一些路由規則將任務分派到任務隊列,然后將任務從任務隊列交付給worker - 任務執行單元(Worker)
Worker是Celery提供的任務執行的單元,worker並發的運行在分布式的系統節點中,運行后台作業的進程 - 任務結果存儲(Result)
Result用來存儲Worker執行的任務的結果,Celery支持以不同方式存儲任務的結果,包括AMQP, Redis等
另外: Celery本身不提供消息服務,但是可以方便的和第三方提供的消息中間件集成。包括,RabbitMQ, Redis等等
其他: Celery還支持不同的並發、序列化和壓縮的手段
- 並發:prefork、eventlet、gevent、threads
- 序列化:pickle、json、yaml、msgpack 等
- 壓縮:zlib,、bzip2
第二章 Celery安裝相關軟件
備注:我是在windows10環境下做的,Linux應該大同小異
1、Celery安裝
pip install celery
2、其他安裝
這里有個坑.win10系統啟動worker報錯ValueError: not enough values to unpack (expected 3, got 0),解決辦法:
pip install eventlet
Django中使用的時候,報錯 AttributeError: ‘str’ object has no attribute ‘items’。redis版本太高,降低版本 pip install redis==2.10.6
pip install redis==2.10.6
第三章 Celery代碼實現
1、Celery基本使用方法
備注:在這里,我使用的是redis作為消息中間件
參考