python消息队列celery_消息队列:celery

1. 什么是 celery

Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统;

Celery 专注于实时处理的异步任务队列,同时也支持任务调度;

Celery 本身不含消息服务,它使用第三方消息服务来传递任务,目前 Celery 支持的消息服务有 RabbitMQ、Redis;

Celery 应用是线程安全的,所以多个不同配置、不同组件、不同任务的 应用可以在一个进程空间里共存;

Celery的架构组成

Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker) 和 任务执行结果存储(task result store) 组成。

消息中间件

Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ,Redis,MongoDB(experimental),Amazon SQS (experimental),CouchDB (experimental), SQLAlchemy (experimental),Django ORM (experimental), IronMQ

任务执行单元

Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。

任务结果存储

Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括 AMQP,redis,memcached,mongodb,SQLAlchemy, Django ORM,Apache Cassandra,IronCache 等。

这里我先不去看它是如何存储的,就先选用redis来存储任务执行结果。

因为涉及到消息中间件(在Celery帮助文档中称呼为中间人),为了更好的去理解文档中的例子,可以安装两个中间件,一个是RabbitMQ,一个redis。

根据 Celery的帮助文档 安装和设置RabbitMQ, 要使用 Celery,需要创建一个 RabbitMQ 用户、一个虚拟主机,并且允许这个用户访问这个虚拟主机。

使用场景

异步任务:将耗时操作任务提交给 Celery 去异步执行,比如发送短信/邮件、消息推送、音视频处理等等

定时任务:定时执行某件事情,比如每天数据统计

celery 特点

celery 在多目录结构中异步执行

from celery import Celery

cel = Celery('celery_demo',

broker='redis://127.0.0.1:6379/1',

backend='redis://127.0.0.1:6379/2',

# 包含以下两个任务文件,去相应的py文件中找任务,对多个任务做分类

include=['celery_tasks.task01',

'celery_tasks.task02'

])

# 时区

cel.conf.timezone = 'Asia/Shanghai'

# 是否使用UTC

cel.conf.enable_utc = False

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值