python celery应用场景_Celery架构原理和使用方法

1. Celery 简介

Celery是一个自带电池的基于Python开发的分布式异步消息任务队列,它非常易于使用。通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用Celery。它主要适用于两大类场景:

异步:

有的任务执行时间较长,你不想让程序一直等待结果返回,可以先将改任务放入celery任务队列中,并从Celery获取一个任务ID。后续通过询问Celery来得知任务执行状态和进度。

定时:

需要定时执行同样的任务,Celery任务队列支持定时触发,可以按照时间间隔或者crontab表达式来触发任务。

Celery具有以下优点:

Simple(简单)

Celery 使用和维护都非常简单,并且不需要配置文件。它有一个活跃、友好的社区,你可以去讨论问题、需求支持。包括一个mailing-list 和一个IRC channel.

这有一个最简单的应用示例,你可以参照:

from celery import Celery

app = Celery('hello', broker='amqp://guest@localhost//')

@app.task

def hello():

return 'hello world'

Highly Available(高可用)

woker和client会在网络连接丢失或者失败时,自动进行重试。并且有的brokers 也支持“双主”或者“主/从”的方式实现高可用。

Fast(快速)

单个的Celery进程每分钟可以处理百万级的任务,并且只需要毫秒级的往返延迟(使用 RabbitMQ, librabbitmq, 和优化设置时)

Flexible(灵活)

Celery几乎每个部分都可以扩展使用,自定义池实现、序列化、压缩方案、日志记录、调度器、消费者、生产者、broker传输等等。

2. Celery基本工作流程

Celery基本工作流程

3. Celery安装

你可以安装Celery通过Python包管理平台(PyPI)或者源码安装

使用pip安装:

$ pip install -U Celery

你也可以使用pip命令安装与Celery捆绑、依赖的组件:

$ pip install "celery[librabbitmq]"

$ pip install "celery[librabbitmq,redis,auth,msgpack]"

4. Celery使用

4.1 Brokers

Celery支持多种消息中间件作为Broker,即中间人。来在应用程序和Worker之间传递消息。

支持的消息中间件总览:

消息中间件

支持适配状态

支持监控

支持远程控制

RabbitMQ

稳定

Redis

稳定

Amazon SQS

稳定

Zookeeper

实验

RabbitMQ是默认的Broker它不需要其他额外的依赖和初始化配置。可参考我之前写的文章【RabbitMQ的Python客户端pika使用调研】和官方教程【Using RabbitMQ】,至于其他的消息中间件作为broker这里就不一一展开介绍了。

4.2 Worker

4.3 触发器

4.3.1 定时触发器

4.3.2 调用触发器

4.3 管理获取任务状态

4.4 backend

4.5 与Flask框架集成

4.6 与Django框架集成

踩过的一些坑

任务重复执行

celery 在执行task时有个机制,就是任务时长超过了 visibility_timeout 时还没执行完,就会指定其他worker重新开始task,默认的时长是一小时.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值