Celery 提供了丰富的监控和扩展功能

root
abc abc

B站资源: https://www.bilibili.com/vi...

Celery 是一个强大的异步任务队列/作业队列,基于分布式消息传递,主要用于在 Python 应用程序中执行异步任务。它支持任务调度、任务持久化、工作执行、任务结果跟踪和监控。

安装 Celery

首先,确保你的环境中安装了 Celery。你可以通过 pip 来安装:

pip install celery
基本概念

Broker:消息代理,如 RabbitMQ, Redis, 或其他消息队列服务。Celery 通过这个代理来传递任务消息。

Backend:用于存储任务结果的存储系统,如 Redis, Database, 或其他。

Worker:运行在后台的进程,负责执行任务。

示例

  1. 设置 Broker 和 Backend

首先,你需要设置一个消息代理和结果后端。这里以 Redis 为例:

pip install redis

然后,配置你的 Celery 实例:

from celery import Celery

app = Celery('tasks', broker='redis://localhost:6379/0', backend='redis://localhost:6379/0')

  1. 定义任务

在 Celery 中,任务是通过装饰器 @app.task 定义的:

@app.task
def add(x, y):
return x + y

  1. 启动 Worker

在命令行中启动 worker:

celery -A your_project worker --loglevel=info

将 your_project 替换为包含你的 Celery 实例的文件或模块名。

  1. 调用任务

在另一个 Python 脚本或你的应用中,你可以这样调用任务:

result = add.delay(4, 4) # 使用 .delay() 来异步调用任务
print('Task result:', result.get(timeout=1)) # 获取结果,可以设置超时时间
异步与同步调用

异步调用:使用 .delay() 方法,它会立即返回一个 AsyncResult 对象,你可以稍后获取结果。

同步调用:使用 .apply() 方法,它会阻塞直到任务完成并返回结果。

监控与扩展

Celery 提供了丰富的监控和扩展功能,如 Flower(一个 Celery 的 web 监控工具)和 Celery Beat(用于定期执行任务的工具)。你可以通过以下方式安装并运行 Flower:

pip install flower
celery -A your_project flower

然后访问 http://localhost:5555 查看监控界面。

通过以上步骤,你可以在 Python 应用中实现强大的异步任务处理能力。