一、简介

  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('任务已经开始被执行')

 

posted on 2020-07-26 01:01  焚音留香  阅读(106)  评论(0编辑  收藏  举报