一、简介
1、是一种异步任务框架。
2、可以执行:异步任务、延时任务、定时任务。
3、安装模块:pip install celery。
4、对windows支持不是很好,需要另外安装模块:pip install eventlet。
5、在windows环境下,如果celery指令报错,可以在尾部加上<-P eventlet>。
二、基本结构
1、创建celery对象:
from celery import Celery broker = 'redis://127.0.0.1:6379/1' # 将redis的db1用于存放broker任务队列 backend = 'redis://127.0.0.1:6379/2' # 将redis的db2用于存放任务执行完的结果 app = Celery(__name__, broker=broker, backend=backend) # 生成celery对象 # 用@app.task装饰的方法就是celery任务 @app.task def add(x, y): return x + y
2、启动worker:celery worker -A celery_task -l info (-P eventlet)
3、投放任务:
from celery_task import add ret = add.delay(3, 6) # 向broker中投递一个任务,返回任务id
4、获取任务执行结果:
from celery_task import app from celery.result import AsyncResult id = '3e397fd7-e0c1-4c5c-999c-2655a96793bb' # 任务id if __name__ == '__main__': async = AsyncResult(id=id, app=app) # 填入任务编号和celery对象 if async.successful(): result = async.get() print(result) elif async.failed(): print('任务失败') elif async.status == 'PENDING': print('任务等待中被执行') elif async.status == 'RETRY': print('任务异常后正在重试') elif async.status == 'STARTED': print('任务已经开始被执行')