
Python 的 Celery 是一个强大的分布式任务队列系统,用于异步执行耗时的任务。它支持多种消息传递系统,如 RabbitMQ、Redis 等,用于任务分发和结果存储。
Celery 提供了易于使用的 API,允许开发者以声明式方式定义任务,支持定时任务、周期性任务以及基于时间的复杂任务调度。它还具备高可用性和可扩展性,非常适合构建大规模的分布式系统。
Celery 广泛应用于 Web 应用、数据处理、定期报告生成等场景,可以显著提高应用程序的响应速度和处理能力,是实现后台任务处理和异步操作的优选工具。
# celery 安装pip install celery

可以看见不仅仅安装了celery,还安装了amqp-5.2.0 billiard-4.2.1 celery-5.4.0 click-8.1.7 click-didyoumean-0.3.1 click-plugins-1.1.1 click-repl-0.3.0 kombu-5.4.2 vine-5.1.0
| 包名 | 包中文名 | 释义 | 连接 |
|---|---|---|---|
| amqp-5.2.0 | / | AMQP是一种提供高度可靠的异步消息传输协议。 | / |
| billiard-4.2.1 | / | billiard是Python的进程池库,提供了多进程并发执行任务的功能。 | / |
| celery-5.4.0 | / | 主进程 | / |
| click-8.1.7 | / | Click 是一个 Python 库,用于创建命令行接口,支持装饰器、参数验证和帮助页面生成。 | / |
| click-didyoumean-0.3.1 | / | click-didyoumean是一个Click命令行接口扩展,它在用户输入错误命令时提供智能建议。 | / |
| click-plugins-1.1.1 | / | click-plugins 是一个 Python 库,用于在 Click 命令行界面中动态加载插件。它简化了插件的发现和注册过程,使得扩展应用程序变得更加容易。 | / |
| click-repl-0.3.0 | / | click-repl 是一个 Python 库,用于创建基于 Click 的交互式命令行界面。 | / |
| kombu-5.4.2 | / | Kombu 是一个 Python 库,用于异步消息队列,支持多种消息代理,如 RabbitMQ、Redis 和 Amazon SQS。 | / |
| vine-5.1.0 | / | Vine是一个Python库,用于异步编程,提供了简单的Promise实现。 | / |
# celery 监控 flowerpip install flower
project.├── config.py├── __init__.py├── period_task.py└── tasks.py
__init__.py
from celery import Celeryapp = Celery('project') # 创建 Celery 实例app.config_from_object('project.config')
config.py
BROKER_URL = 'redis://10.8.238.2:6379/0' # Broker配置,使用Redis作为消息中间件CELERY_RESULT_BACKEND = 'redis://10.8.238.2:6379/0' # BACKEND配置,这里使用redisCELERY_RESULT_SERIALIZER = 'json' # 结果序列化方案CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 # 任务过期时间CELERY_TIMEZONE='Asia/Shanghai' # 时区配置CELERY_IMPORTS = ( # 指定导入的任务模块,可以指定多个'project.tasks','project.period_task')
tasks.py
import celeryimport timefrom celery.utils.log import get_task_loggerfrom project import app@app.taskdef sum(x, y):return x + y@app.taskdef mul(x, y):time.sleep(5)return x * y