celery简介

Celery是一款基于Python开发的分布式异步消息任务队列工具,可以轻松实现任务的异步处理。它拥有简单易用、高可用性、快速执行等特性,并且各个组件高度可扩展。Celery支持多种消息代理,如RabbitMQ、Redis等,适用于定时任务、批量操作等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, 举几个实例场景中可用的例子:

你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情。

你想做一个定时任务,比如每天检测一下你们所有客户的资料,如果发现今天 是客户的生日,就给他发个短信祝福。

Celery有以下优点:

  1. 简单:一单熟悉了celery的工作流程后,配置和使用还是比较简单的
  2. 高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务
  3. 快速:一个单进程的celery每分钟可处理上百万个任务
  4. 灵活: 几乎celery的各个组件都可以被扩展及自定制

Celery包括如下组件:

  • Celery Beat

任务调度器,Beat进程会读取配置文件的内容,周期性的将配置中到期需要执行的任务发送给任务队列

  • celery Worker

执行任务的消费者,通常会在多台服务器运行多个消费者来提高执行效率

  • Broker

消息代理,或者叫做消息中间件,接受任务生产者发送过来的任务消息,存进队列在按序分发给任务消费方(通常是消息队列或者数据库)

  • Producer

调用了Celery提供的API,函数或者装饰器而产生任务并交给任务队列处理的都是任务生产者

  • Result Backend

任务处理完后保存状态信息和结果,以供查询。Celery默认已支持 Redis,RabbitMQ, MongoDB,Django ORM,SQLAIchemy等方式

Celery目前支持很多第三方软件作为消息代理,但适用于生产环境的只有RabbitMQ和Redis,至于其他的方式,一是支持有限,二是可能得不到更好的技术支持。Celery官方推荐的是RabbitMQ。

在客户端和消费者之间传输数据需要序列化和反序列化,Celery支持如下表的序列化方案:

方案说明
picklepickle是Python标准库中的一个模块,支持Python内置的数据结构,但是它是Python的专有协议。
从Celery3.2开始,由于安全性等原因Celery将拒绝pickle这个方案
jsonjson支持多种语言,可用于跨语言方案
yamlyaml的表达能力更强,支持的数据类型比json多,但是python客户端的性能不如json
msgpackmsgpack是一个二进制的类json的序列化方案,但是比json的数据结构更小、更快



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值