Python 异步任务框架 Celery 总结使用
前言
Celery 是一个强大的 Python 库,专门用于处理分布式任务队列,特别适合需要异步执行的后台任务,如发送电子邮件、处理大数据或定时任务。它通常与消息代理(如 RabbitMQ 或 Redis)配合使用,以实现任务的分发和执行。
- 以下是一个简单的
Celery实例代码,使用Redis作为消息代理,包含任务定义和调用方法。 - 需要安装
Celery和Redis,并确保Redis服务器运行。
基本设置
以下是一个基本的 Celery 实例代码,展示如何设置 Celery 应用、定义任务并调用它:
任务定义
创建文件 tasks.py,内容如下:
from celery import Celery
app = Celery('tasks', broker='redis://localhost:6379/0', backend='redis://localhost:6379/0')
@app.task
def add(x, y):
return x + y
启动 Celery 工作进程
打开终端,运行以下命令启动 Celery 工作进程:
celery -A tasks worker --loglevel=INFO
工作进程会监听 Redis 中的任务队列,执行接收到的任务。
调用任务
创建文件 main.py,内容如下:
from tasks import add
result = add.delay(4, 4)
print(result.get())
运行 main.py 文件,输出应为 8,表示任务成功执行。
使用 delay() 方法异步调用 add 任务,result.get() 用于获取任务的执行结果。
注意事项
- 确保已安装
Celery和Redis(通过pip install celery redis安装)。 - 确保
Redis服务器正在运行(可通过redis-server启动)。 - 如果使用
RabbitMQ作为消息代理,需将broker和backend改为'pyamqp://guest@localhost//'。
Celery 的使用涉及以下几个核心组件:
- Celery 应用实例:通过
Celery类创建,需指定应用名称和消息代理。 - 任务定义:使用
@app.task装饰器标记需要异步执行的Python函数。 - 工作进程:通过命令行启动
Celery工作进程来执行任务。 - 任务调用:通过
.delay()方法异步调用任务,.get()方法获取结果(需配置结果后端)。

浙公网安备 33010602011771号