什么是 Celery?
Celery 是一个基于分布式消息传递的异步任务队列(Task Queue)框架,用 Python 编写。它专注于实时处理(real-time processing),同时也支持任务调度(scheduling)。
通过将耗时任务(如发送邮件、图像处理、数据导入等)放入后台异步执行,Celery 能显著提升 Web 应用的响应速度和用户体验。
核心特性
异步执行
任务在后台运行,不阻塞主程序流程。
分布式架构
支持多 Worker 并行处理任务,轻松横向扩展。
多种 Broker 支持
兼容 RabbitMQ、Redis、Amazon SQS 等消息中间件。
定时任务
通过 Celery Beat 实现周期性任务调度。
快速开始示例
安装 Celery:
pip install celery
创建 tasks.py:
from celery import Celery
app = Celery('tasks', broker='redis://localhost:6379/0')
@app.task
def add(x, y):
return x + y
启动 Worker:
celery -A tasks worker --loglevel=info
在 Python 中调用任务:
from tasks import add
result = add.delay(4, 6)
print(result.get()) # 输出: 10
常见应用场景
- 用户注册后发送欢迎邮件
- 批量数据处理或报表生成
- 日志分析与聚合
- 定时清理缓存或数据库
- 与机器学习模型集成进行异步预测
最佳实践建议
- 选择合适的 Broker:Redis 适合简单场景,RabbitMQ 更稳定且功能丰富。
- 合理设置任务超时与重试:避免任务卡死或无限重试。
- 监控任务状态:使用 Flower 等工具可视化任务执行情况。
- 分离任务代码与业务逻辑:提高可维护性。
- 使用结果后端(Result Backend)谨慎:并非所有场景都需要存储任务结果。