Celery是異步任務(wù)隊(duì)列,可以獨(dú)立于主進(jìn)程運(yùn)行,在主進(jìn)程退出后,也不影響隊(duì)列中的任務(wù)執(zhí)行。
任務(wù)執(zhí)行異常退出,重新啟動(dòng)后,會(huì)繼續(xù)執(zhí)行隊(duì)列中的其他任務(wù),同時(shí)可以緩存停止期間接收的工作任務(wù),這個(gè)功能依賴(lài)于消息隊(duì)列(MQ、Redis)。

Celery的 架構(gòu) 由三部分組成,消息中間件(message broker),任務(wù)執(zhí)行單元(worker)和任務(wù)執(zhí)行結(jié)果存儲(chǔ)(task result store)組成。
消息中間件:Celery本身不提供消息服務(wù),但是可以方便的和第三方提供的消息中間件集成。包括, RabbitMQ , Redis , MongoDB (experimental), Amazon SQS (experimental),CouchDB (experimental), SQLAlchemy (experimental),Django ORM (experimental), IronMQ。推薦使用:RabbitMQ、Redis作為消息隊(duì)列。
任務(wù)執(zhí)行單元:Worker是Celery提供的任務(wù)執(zhí)行的單元,worker并發(fā)的運(yùn)行在分布式的系統(tǒng)節(jié)點(diǎn)中。
任務(wù)結(jié)果存儲(chǔ):Task result store用來(lái)存儲(chǔ)Worker執(zhí)行的任務(wù)的結(jié)果,Celery支持以不同方式存儲(chǔ)任務(wù)的結(jié)果,包括AMQP, Redis,memcached, MongoDB,SQLAlchemy, Django ORM,Apache Cassandra, IronCache
異步任務(wù)處理:例如給注冊(cè)用戶(hù)發(fā)送短消息或者確認(rèn)郵件任務(wù)。 大型任務(wù):執(zhí)行時(shí)間較長(zhǎng)的任務(wù),例如視頻和圖片處理,添加水印和轉(zhuǎn)碼等,需要執(zhí)行任務(wù)時(shí)間長(zhǎng)。 定時(shí)執(zhí)行的任務(wù):支持任務(wù)的定時(shí)執(zhí)行和設(shè)定時(shí)間執(zhí)行。例如性能壓測(cè)定時(shí)執(zhí)行。
| 軟件名稱(chēng) | 版本號(hào) | 說(shuō)明 |
| Linux | Centos 6.5(64bit) | 操作系統(tǒng) |
| Python | 3.5.2 | |
| Django | 1.10 | Web框架 |
| Celery | 4.0.2 | 異步任務(wù)隊(duì)列 |
| Redis | 2.4 | 消息隊(duì)列 |
使用方法介紹:
Celery的運(yùn)行依賴(lài)消息隊(duì)列,使用時(shí)需要安裝redis或者rabbit。
這里我們使用Redis。安裝redis庫(kù):
sudo yum install redis
新聞熱點(diǎn)
疑難解答
圖片精選