celery介绍、安装和使用
程序员开发指南Description
https://guide.996station.com
996技术站 - 活在未来 | KingSun966技术站,极客带你看世界!https://www.996station.com
一、 问题抛出
我们在做网站后端程序开发时,会碰到这样的需求:用户需要在我们的网站填写注册信息,我们发给用户一封注册激活邮件到用户邮箱,如果由于各种原因,这封邮件发送所需时间较长,那么客户端将会等待很久,造成不好的用户体验.
那么怎么解决这样的问题呢?
我们将耗时任务放到后台异步执行。不会影响用户其他操作。除了注册功能,例如上传,图形处理等等耗时的任务,都可以按照这种思路来解决。如何实现异步执行任务呢?我们可使用celery. celery除了刚才所涉及到的异步执行任务之外,还可以实现定时处理某些任务。
二、celery介绍
Celery是一个功能完备即插即用的任务队列。它使得我们不需要考虑复杂的问题,使用非常简单。celery看起来似乎很庞大,本章节我们先对其进行简单的了解,然后再去学习其他一些高级特性。celery适用异步处理问题,当发送邮件、或者文件上传, 图像处理等等一些比较耗时的操作,我们可将其异步执行,这样用户不需要等待很久,提高用户体验。celery的特点是:
- 简单,易于使用和维护,有丰富的文档。
- 高效,单个celery进程每分钟可以处理数百万个任务。
- 灵活,celery中几乎每个部分都可以自定义扩展。
celery非常易于集成到一些web开发框架中.
三、celery任务队列
任务队列是一种跨线程、跨机器工作的一种机制.
任务队列中包含称作任务的工作单元。有专门的工作进程持续不断的监视任务队列,并从中获得新的任务并处理.
celery通过消息进行通信,通常使用一个叫Broker(中间人)来协client(任务的发出者)和worker(任务的处理者). clients发出消息到队列中,broker将队列中的信息派发给worker来处理。
一个celery系统可以包含很多的worker和broker,可增强横向扩展性和高可用性能。
四、celery安装
我们可以使用python的包管理器pip来安装:
pip install -U Celery
也可从官方直接下载安装包:celery · PyPI
tar xvfz celery-0.0.0.tar.gz cd celery-0.0.0 python setup.py build python setup.py install
五、celery使用
使用celery第一件要做的最为重要的事情是需要先创建一个Celery实例,我们一般叫做celery应用,或者更简单直接叫做一个app。app应用是我们使用celery所有功能的入口,比如创建任务,管理任务等,在使用celery的时候,app必须能够被其他的模块导入。
1.创建应用
我们首先创建tasks.py模块, 其内容为:
from celery import Celery# 我们这里案例使用redis作为broker app = Celery('demo', broker='redis://:332572@127.0.0.1/1')# 创建任务函数 @app.task def my_task():print("任务函数正在执行....")
Celery第一个参数是给其设定一个名字, 第二参数我们设定一个中间人broker, 在这里我们使用Redis作为中间人。my_task函数是我们编写的一个任务函数, 通过加上装饰器app.task, 将其注册到broker的队列中。
现在我们在创建一个worker, 等待处理队列中的任务.打开终端,cd到tasks.py同级目录中,执行命令:
celery -A tasks worker --loglevel=info
显示效果如下:
2.调用任务
任务加入到broker队列中,以便刚才我们创建的celery workder服务器能够从队列中取出任务并执行。如何将任务函数加入到队列中,可使用delay()。
进入python终端, 执行如下代码:
from tasks import my_task my_task.delay()
执行效果如下:
我们通过worker的控制台,可以看到我们的任务被worker处理。调用一个任务函数,将会返回一个AsyncResult对象,这个对象可以用来检查任务的状态或者获得任务的返回值。
3.存储结果
如果我们想跟踪任务的状态,Celery需要将结果保存到某个地方。有几种保存的方案可选:SQLAlchemy、Django ORM、Memcached、 Redis、RPC (RabbitMQ/AMQP)。
例子我们仍然使用Redis作为存储结果的方案,任务结果存储配置我们通过Celery的backend参数来设定。我们将tasks模块修改如下:
from celery import Celery# 我们这里案例使用redis作为broker app = Celery('demo',backend='redis://:332572@127.0.0.1:6379/2',broker='redis://:332572@127.0.0.1:6379/1')# 创建任务函数 @app.task def my_task(a, b):print("任务函数正在执行....")return a + b
我们给Celery增加了backend参数,指定redis作为结果存储,并将任务函数修改为两个参数,并且有返回值。
celery介绍、安装和使用相关推荐
- Celery介绍和使用
目录 1.为什么使用Celery? 2. Celery介绍 3. 创建Celery实例并加载配置 4. 定义发送短信任务 5.启动Celery服务 6. 调用发送短信任务 1.为什么使用Celery? ...
- Celery介绍——手机短信异步发送
1.Celery介绍 1.1 celery应⽤举例 Celery 是⼀个 基于python开发的 分布式异步消息任务队列 ,通过它可以轻松的实现任务的异步处 理,如果你的业务场景中需要⽤到异步任务,就 ...
- Celery介绍--手机短信异步发送
1.Celery介绍 1.1 celery应⽤举例 Celery 是⼀个 基于python开发的 分布式异步消息任务队列 ,通过它可以轻松的实现任务的异步处 理,如果你的业务场景中需要⽤到异步任务,就 ...
- Celery介绍---手机短信异步发送
1.Celery介绍 1.1 celery应⽤举例 Celery 是⼀个 基于python开发的 分布式异步消息任务队列 ,通过它可以轻松的实现任务的异步处 理,如果你的业务场景中需要⽤到异步任务,就 ...
- 安装vag服务器虚拟机,FusionAccess桌面云组件介绍/安装
FusionAccess桌面云组件介绍/安装 FusionAccess桌面云组件介绍/安装 文章目录桌面云管理组件接入访问控制层 虚拟桌面管理层 桌面虚拟机核心组件 安装部署 桌面云关联组件AD-活动 ...
- HarmonyOS实战[一]——原理概念介绍安装:基础篇
[本文正在参与"有奖征文|HarmoneyOS征文大赛"活动] 相关文章: HarmonyOS实战[一]--原理概念介绍安装:基础篇 HarmonyOS实战[二]-超级详细的原子化 ...
- MySQL介绍-安装-登录
MySQL介绍-安装-登录 数据库的概念 数据存储方式 计算机数据(Data)的存储一般以硬盘为数据存储空间资源,从而保证计算机内的数据能够持续保存.对于数据的处理,一般会采用数据库相关的技术进行处理 ...
- VSFTP介绍安装使用
ftp 是File Transfer Protocol的缩写,文件传输协议,用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式.它属于网络传输协议的应用层. sftp 是SSH File T ...
- Mininet的介绍安装
Mininet的介绍 Mininet是一个强大的网络仿真平台,通过这个这个平台,我们可以很方便的模拟真实环境中的网络操作与架构.当前SDN/OpenFlow发展的如火如荼,但是在真实网络中又不可以进行 ...
最新文章
- android屏幕关闭屏幕,如何在设备进入睡眠模式(屏幕关闭)时显示屏幕android?...
- [Java基础]Properties
- bnx2: Can't load firmware file bnx2/bnx2-mips-09-6.2.1b.fw
- Atitit algo art算法的艺术 attilax 著 va v67.docxAtitit 算法的艺术 attilax 1. 模型 文本 音视频 图像 32. 文本方面的编码算法 3
- soapui脚本链接mysql_SOAPUI中文教程---脚本和脚本库
- python往npy写入数据_数据存储在*.npy中的方式是什么?
- 抢购秒杀处理方案、分析热点数据
- SpringBoot统一异常拦截处理
- Android程序中重启系统,Android调用系统关机与重启功能
- 手动查毒删除病毒文件图
- filling the g ap s: multivariate time series imputation by graph neural networks
- 二叉树的结构特点及性质
- 串口(DB9)连接线的制作方法
- docker创建容器相关命令【详细版】
- 简易的本地音乐播放器 适用于Java初学者
- Win32汇编练习(SMU—循环结构)
- 提高亚马逊关键词搜索排名的方法
- html中如何制作星空背景,HTML5网页制作200行代码搞定canvas星空背景连线
- (一)c语言百题趣味题之--分糖问题
- 浅谈H5捕鱼游戏设计