分布式队列Celery入门
Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具。它是一个专注于实时处理的任务队列,同时也支持任务调度。Celery 是语言无关的,虽然它是用 Python 实现的,但他提供了其他常见语言的接口支持。
Celery 结构
网上找到一张用得最多的图
下面针对图中的每一部分做解释:
Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。
消息中间件(broker)
一个消息传输的中间件。每当应用程序调用celery的异步任务的时候,会向broker传递消息,而后celery的worker将会取到消息,执行相应程序。也就是消费者和生产者之间的桥梁,
另外Celery 本身不提供队列服务,官方推荐使用 RabbitMQ 和 Redis 等。
连接字符串:
RabiitMQ使用amqp://localhost
Redis使用redis://localhost
任务执行结果存储(backend)
backend: 用于存储这些消息以及celery执行的一些消息和结果,以此用来确认对方是否接受了。
任务执行单元(worker)
worker: Celery类的实例,作用就是执行各种任务
Celery 安装
目前,Windows使用celery只能安装 3.1.25版,linux就可以安装4.0以上的了,这里以Windows为例。
安装
pip install celery==3.1.25
先来一个简单例子
使用官网上的例子,然后把broker的信息改好,这里我们使用redis
首先在D:\CeleryDemo新建一个文件叫task.py输入以下代码。在输入之前确保redis服务是启动的。
from celery import Celery app = Celery('tasks', backend='redis://localhost:6379/0', broker='redis://localhost:6379/0') #配置好celery的backend和broker @app.task #普通函数装饰为 celery task def add(x, y): return x + y
通过上面简单的代码broker 我们有了,backend 我们有了,task 我们也有了,现在就该运行 worker 进行工作了,在 task.py 所在目录下运行:
celery -A task worker --loglevel=info
意思就是运行 task 这个任务集合的 worker 进行工作(当然此时broker中还没有任务,worker此时相当于待命状态)
最后一步,触发任务,最简单方式就是在task.py所在目录下写一个trigger.py调用被装饰成 task 的函数:
from task import add import time result = add.delay(4, 4) #不要直接 add(4, 4),这里需要用 celery 提供的接口 delay 进行调用 while not result.ready(): time.sleep(1) print ('task done: {0}'.format(result.get()))
运行之后可以看到
好了,恭喜你已经入门了。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
云服务平台的架构及优势(上)
前言作为一个互联网公司或提供互联网服务的公司,其核心的技术资产就是云端平台和云端平台上的服务。 我们通常所说的云服务或云平台广义上是一个概念,但其实内部是两个部分。 1.支撑云服务运行的硬件和软件系统环境(云架构平台,简称云平台); 2.实现业务逻辑,支持客户应用,对外提供服务的应用服务平台(云服务平台,简称云服务)。 本期我们为您解读“云平台”的业界概况和优势。 云平台——选择经过数年的爆发式技术发展和几年的市场沉淀,云平台在2017年终于实现了天下一统,来自Google云平台的开源容器集群管理系Kubernetes(通常称为k8s)成为业界事实标准,世界各大知名云服务商和企业为更好促进云平台云服务的发展,以Kubernetes为核心共同发起了一个组织称之为 云计算基金会 (CNCF,Cloud NativeComputing Foundation)。 该组织的目标有两个: · 与开源社区和合作伙伴一起共同把控Kubernetes未来的发展; · 开发新的软件以让整个容器工具集更加健壮。 加入及通过CNCF兼容性认证的部分厂商可以看到包括: · 国外Google、Amazon、IBM...
- 下一篇
专访熊节:编程其实是个社会活动
重构20年,有人说Martin Fowler改变了人类开发软件的模式,这一点也不过分,从《分析模式》《UML精粹》《领域特定语言》,到这本《重构》新版可以看得出来,他的每一本书都是软件开发人员必备的案头读物。此前他参与的“敏捷宣言”,更是引领了整个行业对敏捷开发的认识,一直到现在。 2009年,熊节在为《重构》第1版的中译本再版整理译稿时,他已经隐约察觉行业中对“重构”这个概念的矛盾张力。 如今又是10年过去,只从国内的情况而论,“重构”概念的表里分离,大有愈演愈烈之势。随着当年的一线技术人员纷纷走上领导岗位,他们乐于将“重构”这块漂亮招牌用在更宽泛的环境下,例如系统架构乃至组织结构,都可以“重构”一下。然而基本功的欠缺,却也一路如影随形。当年在对象中的刀劈斧砍,如今被照搬到了架构、组织的调整。于是“重构”的痛苦回忆又一遍遍重演,甚而程度更深、影响更广、为害更烈。 此时转头看Martin Fowler时隔将近廿载后终于付梓的《重构》第2版,熊节说:“我不禁感叹于Fowler先生对‘微末功夫’ 的执着。在此书尚未成型之前,我和当时ThoughtWorks的同事曾有很多猜测,猜Fowler...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长