1.什么是Celery?
Celery 是基于Python实现的模块, 用于执行异步定时周期任务的
其结构的组成是由
1.用户任务 app
2.管道 broker 用于存储任务 官方推荐 redis rabbitMQ / backend 用于存储任务执行结果的
3.员工 worker
2.如何使用Celery?
首先创建以下三个文件
from celery import Celery import time # 模拟用户App my_task = Celery("task", broker="redis://127.0.0.1:6379", backend="redis://127.0.0.1:6379") # 向应用中添加任务 @my_task.task def my_func1(a, b): time.sleep(10) return f"my_func1 return{a}{b}" @my_task.task def my_func2(): return "my_func2" @my_task.task def my_func3(): return "my_func3"
from c1 import my_func1 # 将任务交给Worker执行 res = my_func1.delay(2, 3) print(res)
from celery.result import AsyncResult from c1 import my_task # 拿出ID看任务执行情况 async_task = AsyncResult(id='bd5bd9b0-7510-406c-8340-eb3ddb74af5b', app=my_task) # result = async_task.get() # print(result) # 判断异步任务是否执行成功 if async_task.successful(): #获取异步任务的返回值 result = async_task.get() print(result) else: print("任务还未执行完成")
下一步启动Worker
Linux ---- celery worker -A s1 -l INFO
Windows ---- - celery worker -A s1 -l INFO -P eventlet