hand
_1_5_108
4
返回栏目
1k
9k
1k
1k
5k
1k
1k
1k
1k
3k
2k
1k
0.8k
2k
3k
1k
1k
0.7k
0.9k
1k
0.6k
0.4k
0.4k
0.3k
3k
2k
9k
0.4k
0.4k
0.8k
0.5k
3k
5k
1k
2k
2k
3k
5k
1k
1k
0.4k
0.5k
0.4k
0.6k
0.7k
1k
0.4k
0.3k
4k
0.5k
0k
0.3k
0k
0.2k
0.2k
0.3k
0.9k
0.9k
0.1k
0.9k
0.9k
1k
0.5k
6k
0.3k
0.4k
0.7k
0.6k
8k
3k
1k
1k
1k
1k
0k
2k
1k
1k
0.2k
5k
4k
5k
0.4k
0.8k
1k
1k
1k
0.1k
2k
1k
2k
6k
0k
2k
7k
1k
5k
2k
3k
1k
0k
1k
0.9k
0.4k
0.2k
1k
3k
4k
1k
1k
1k
2k
3k
0.7k
0.3k
0.5k
0.6k
1k
0.9k
3k
0.3k
4k
返回python栏目
作者:
贺及楼
成为作者
更新日期:2024-10-28 10:41:17
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 监控 flower
pip install flower
project
.
├── config.py
├── __init__.py
├── period_task.py
└── tasks.py
__init__.py
from celery import Celery
app = 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配置,这里使用redis
CELERY_RESULT_SERIALIZER = 'json' # 结果序列化方案
CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 # 任务过期时间
CELERY_TIMEZONE='Asia/Shanghai' # 时区配置
CELERY_IMPORTS = ( # 指定导入的任务模块,可以指定多个
'project.tasks',
'project.period_task'
)
tasks.py
import celery
import time
from celery.utils.log import get_task_logger
from project import app
@app.task
def sum(x, y):
return x + y
@app.task
def mul(x, y):
time.sleep(5)
return x * y
python
整章节共122节
快分享给你的小伙伴吧 ~