Celery介绍和使用
目录
1.为什么使用Celery?
2. Celery介绍
3. 创建Celery实例并加载配置
4. 定义发送短信任务
5.启动Celery服务
6. 调用发送短信任务
1.为什么使用Celery?
- 消费者取到消息之后,要消费掉(执行任务),需要我们去实现。
- 任务可能出现高并发的情况,需要补充多任务的方式执行。
- 耗时任务很多种,每种耗时任务编写的生产者和消费者代码有重复。
- 取到的消息什么时候执行,以什么样的方式执行。
结论:
- 实际开发中,我们可以借助成熟的工具
Celery
来完成。- 有了
Celery
,我们在使用生产者消费者模式时,只需要关注任务本身,极大的简化了程序员的开发流程。
2. Celery介绍
Celery介绍:
- 一个简单、灵活且可靠、处理大量消息的分布式系统,可以在一台或者多台机器上运行。
- 单个 Celery 进程每分钟可处理数以百万计的任务。
- 通过消息进行通信,使用
消息队列(broker)
在客户端
和消费者
之间进行协调。
安装Celery:
$ pip install -U Celery
Celery官方文档
3. 创建Celery实例并加载配置
1.定义Celery包(在主业务逻辑包的同级目录下,新建名字为celery_tasks的包)
2.创建Celery实例(在新建的包下面新建py文件main.py)
main.py里面编写创建实例的代码
# celery启动文件 from celery import Celery# 创建celery实例 celery_app = Celery('实例名称')
3.加载Celery配置(新建一个config.py的文件,来编写配置)
config.py里面添加配置的代码
# Celery的配置文件# 指定中间人、消息队列、任务队列、容器,使用redis broker_url = "redis://192.168.174.129/10"
加载celery的配置(除了实例名称,其他都是固定写法)
# celery启动文件 from celery import Celery# 创建celery实例 celery_app = Celery('实例名称') # 加载celery配置 celery_app.config_from_object('celery_tasks.config')
4. 定义发送短信任务
创建发送短信的任务,(例如创建一个sms的包,任务名为tasks.py(固定的))
4.1.注册任务:在main.py下面编写代码
# celery启动文件 from celery import Celery# 创建celery实例 celery_app = Celery('meiduo') # 加载celery配置 celery_app.config_from_object('celery_tasks.config') # 自动注册celery任务 celery_app.autodiscover_tasks(['celery_tasks.sms'])
4.2.定义任务:在tasks.py 里面编写定义任务的代码
注:装饰器中的name可以自己定义,最好和本任务有关系.(一般和函数名相对应)
将需要使用的celery的代码,放到编写的函数里面,如果该原来该代码有参数,则还是原样给定义的函数加上参数
from celery_tasks.main import celery_app # bind:保证task对象会作为第一个参数自动传入 # name:异步任务别名 # retry_backoff:异常自动重试的时间间隔 第n次(retry_backoff×2^(n-1))s # max_retries:异常自动重试次数的上限 @celery_app.task(bind=True, name='ccp_send_sms_code', retry_backoff=3) # 使用装饰器装饰异步任务,保证celery识别任务 @celery_app.task(name='send_sms_code') # name就是给任务起个别名 def send_sms_code(mobile, sms_code):"""发送短信验证码:param mobile: 手机号:param sms_code: 短信验证码:return: 成功:0 失败:-1"""send_ret = CCP().send_template_sms("*******", "*****", mobile, sms_code)return send_ret
5.启动Celery服务
进入到最初创建的celery_tasks的包的路径下,输入命令启动Celery服务
celery -A celery_tasks.main worker -l info
-A
指对应的应用程序, 其参数是项目中 Celery实例的位置。worker
指这里要启动的worker。-l
指日志等级,比如info
等级。运行后可以到,[tasks] 的下面就由我们刚才定义的任务 send_sms_code
6. 调用发送短信任务
使用celery异步发送短信验证码代替原来的代码,导入定义的任务调用delay()函数
from celery_tasks.sms.tasks import send_sms_code# 使用Celery发送验证码 send_sms_code.delay(mobile, sms_code) # 固定的写法,调用delay
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开发的 分布式异步消息任务队列 ,通过它可以轻松的实现任务的异步处 理,如果你的业务场景中需要⽤到异步任务,就 ...
- celery介绍、安装和使用
程序员开发指南Descriptionhttps://guide.996station.com 996技术站 - 活在未来 | KingSun966技术站,极客带你看世界!https://www.996 ...
- Celery介绍及常见错误
celery 情景:用户发起request,并等待response返回.在本些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间,造成不好的用户体验,比如发送邮件.手机验证码等. 使用 ...
- celery 可视化_Django中Celery的实现介绍(一)
Django中Celery的实现 Celery介绍 Celery是基于Python开发的一个分布式任务队列框架,支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度. 上图展示的是Celery ...
- Django - Celery使用及介绍
1.Celery介绍 1.1 celery应⽤举例 Celery 是⼀个 基于python开发的 分布式异步消息任务队列 ,通过它可以轻松的实现任务的异步处 理,如果你的业务场景中需要⽤到异步任务,就 ...
- python Celery 分布式任务队列快速入门
本节内容 Celery介绍和基本使用 在项目中如何使用celery 启用多个workers Celery 定时任务 与django结合 通过django配置celery periodic task 一 ...
- celery定时任务简单使用
celery介绍 Celery 是一个强大的分布式任务队列,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行.我们通常使用它来实现异步任务( async task )和定时任务( cr ...
最新文章
- 开源项目PullToRefresh详解(一)——PullToRefreshListView
- libgdx学习记录18——Box2d物理引擎
- Nginx配置pathinfo
- VS2017中删项目属性中连接器删除继承的值
- POJ 2054 Color a Tree (贪心)
- Mybatis介绍、jdbc操作数据库原始写法以及Mybatis架构
- centos7 rpm 安装 rabbitMQ 最新版
- noip2017day2
- SqlServer中将某列的值拼接成字符串
- GIS案例练习-----------第十天
- 74HC/LS/HCT/F系列芯片的区别及使用[转]
- 高通平台,MSM8937/MSM8953 RF配置流程
- 小学认识计算机说课ppt,“认识计算机”说课稿.ppt
- DFA(deterministic finite automaton )有限状态机概念
- linux集群pbs管理,PBS-Torque集群部署
- 网站开发进阶(十一)如何将一个jsp页面嵌套在另一个页面中
- 在浏览器输入一句话之后是如何响应的
- Matlab App Designer编译打包exe后读取文件路径问题
- debian nvidia 安装_在 Debian 上安装 Nvidia 显卡驱动启用 Nvenc
- unity中打包APP显示手机最顶端的状态栏