Python 异步任务框架 Celery 总结使用

前言

Celery 是一个强大的 Python 库,专门用于处理分布式任务队列,特别适合需要异步执行的后台任务,如发送电子邮件、处理大数据或定时任务。它通常与消息代理(如 RabbitMQRedis)配合使用,以实现任务的分发和执行。

  • 以下是一个简单的 Celery 实例代码,使用 Redis 作为消息代理,包含任务定义和调用方法。
  • 需要安装 CeleryRedis,并确保 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() 用于获取任务的执行结果。

注意事项

  • 确保已安装 CeleryRedis(通过 pip install celery redis 安装)。
  • 确保 Redis 服务器正在运行(可通过 redis-server 启动)。
  • 如果使用 RabbitMQ 作为消息代理,需将 brokerbackend 改为 'pyamqp://guest@localhost//'

Celery 的使用涉及以下几个核心组件:

  • Celery 应用实例:通过 Celery 类创建,需指定应用名称和消息代理。
  • 任务定义:使用 @app.task 装饰器标记需要异步执行的 Python 函数。
  • 工作进程:通过命令行启动 Celery 工作进程来执行任务。
  • 任务调用:通过 .delay() 方法异步调用任务,.get() 方法获取结果(需配置结果后端)。
posted @ 2025-03-28 17:37  牛奔  阅读(495)  评论(0)    收藏  举报