python任務調度模塊celerycelery簡介Celery特點Celery工作流程圖celery安裝使用
python任務調度模塊celery
celery簡介
Celery是一個python開發的異步分布式任務調度模塊。
Celery本身並不提供消息服務,使用第三方服務,也就是borker來傳遞任務,一般使用rabbitMQ或者Redis。
Celery特點
- 簡單:一單熟悉了celery的工作流程后,配置和使用還是比較簡單的。
- 高可用:當任務執行失敗或執行過程中發生連接中斷,celery 會自動嘗試重新執行任務。
- 快速:一個單進程的celery每分鍾可處理上百萬個任務。
- 靈活: 幾乎celery的各個組件都可以被擴展及自定制。
Celery工作流程圖

celery安裝使用
安裝Celery模塊
pip install celery
Celery的默認broker是RabbitMQ,僅需配置一行
broker_url = 'amqp://guest:guest@localhost:5672//'
redis作為broker也可以。
安裝
pip install redis
配置
broker_url配置redis數據庫地址,格式為redis://:password@hostname:port/db_number。
backend配置任務結果存儲位置,將保存每個任務的執行結果。
app.conf.broker_url = 'redis://localhost:6379/0'
app.conf.result_backend = 'redis://localhost:6379/0'
port和db_number是可選項,默認情況下端口使用6379,db_number使用0。
示例
創建一個celery application定義任務列表,新建一個celery1.py文件
from celery import Celery
broker = "redis://118.24.18.158:6379/5"
backend = "redis://118.24.18.158:6379/6"
app = Celery("celery1", broker=broker, backend=backend)
@app.task
def add(x, y):
return x+y
啟動Celery Worker開始監聽並執行任務
celery -A celery1 worker --loglevel=info
調用任務
import time
from celery1 import add
re = add.delay(10, 20)
print(re)
print(re.status)
time.sleep(8)
print(re.status)
print(re.result)