????????Celery 是一個由 Python 編寫的簡單匿辩、靈活阳准、可靠的用來處理大量信息的分布式系統(tǒng)芳悲,它同時提供操作和維護(hù)分布式系統(tǒng)所需的工具欲账。
????????Celery 專注于實時任務(wù)處理,支持任務(wù)調(diào)度芭概。
????????說白了,它是一個分布式隊列的管理工具惩嘉,我們可以用 Celery 提供的接口快速實現(xiàn)并管理一個分布式的任務(wù)隊列罢洲。
(Celery 本身不是任務(wù)隊列,它是管理分布式任務(wù)隊列的工具文黎,或者換一種說法惹苗,它封裝好了操作常見任務(wù)隊列的各種操作,我們用它可以快速進(jìn)行任務(wù)隊列的使用與管理耸峭,當(dāng)然你也可以自己看 rabbitmq 等隊列的文檔然后自己實現(xiàn)相關(guān)操作都是沒有問題的桩蓉。)
?Celery架構(gòu)由三部分組成,消息中間件(message broker)劳闹,任務(wù)執(zhí)行單元(worker)和任務(wù)執(zhí)行結(jié)果存儲(task result store)組成院究。
消息中間件
????????Celery本身不提供消息服務(wù),但是可以方便的和第三方提供的消息中間件集成本涕。包括业汰,RabbitMQ, Redis, MongoDB (experimental), Amazon SQS (experimental),CouchDB (experimental), SQLAlchemy (experimental),Django ORM (experimental), IronMQ
任務(wù)執(zhí)行單元
????????Worker是Celery提供的任務(wù)執(zhí)行的單元,worker并發(fā)的運行在分布式的系統(tǒng)節(jié)點中菩颖。
任務(wù)結(jié)果存儲
????????Task result store用來存儲Worker執(zhí)行的任務(wù)的結(jié)果样漆,Celery支持以不同方式存儲任務(wù)的結(jié)果,包括AMQP, Redis晦闰,memcached, MongoDB放祟,SQLAlchemy, Django ORM鳍怨,Apache Cassandra, IronCache
定義一個task
from ?celery ?import ?Celery
app = Celery('tasks', backend='amqp://guest@localhost//', broker='amqp://guest@localhost//')
@app.task
def ?add(x, y):
? ? return ?x + y
其中,broker 就是中間件了跪妥;backend就是后端來發(fā)送狀態(tài)消息鞋喇,保持追蹤任務(wù)的狀態(tài),存儲或發(fā)送這些狀態(tài)