什么是 Celery?
Celery 是一个基于 Python 的 分布式任务队列 框架,专门用于执行异步任务和定时任务。
它允许你把一些耗时的操作(如发送邮件、处理图片、调用外部API)丢到后台去执行,而不阻塞主应用流程。
核心思想
Celery 的基本工作流:
Producer(生产者) → 消息中间件(Broker) → Worker(工作者) → 结果存储(可选)
你应用中提交任务后,这个任务会被送到 Broker(如 Redis),Worker 监听这个队列并取出任务执行,结果可以保存在结果后端(如数据库、Redis、RabbitMQ)
核心组件
组件 | 作用 |
---|---|
Task(任务) | 定义你要异步执行的代码函数 |
Broker(消息中间件) | 用来传递任务消息,常用 Redis、RabbitMQ |
Worker(工作进程) | 实际执行任务的后台服务 |
Result Backend(可选) | 用来保存任务结果,例如 Redis、数据库 |
Beat(可选) | Celery 的定时任务调度器 |
Celery 使用流程
1、安装
pip install celery redis
2、创建 Celery 实例
from celery import Celery
celery_app = Celery(‘myapp’,
broker=’redis://localhost:6379/0′,
backend=’redis://localhost:6379/1′) # 可选,用于保存结果
celery_app.conf.timezone = ‘Asia/Shanghai’
3、定义任务(如 tasks.py)
from .celery_app import celery_app
@celery_app.task
def add(x, y):
return x + y
4、运行 worker
celery -A celery_app worker –loglevel=info
5、发送任务
from tasks import add
result = add.delay(2, 3) # 异步提交任务
print(result.get()) # 阻塞获取结果(需要配置 backend)