Celery介绍和使用
- 本章主题
- 关键词
- 为什么需要 Celery
- 结论
- Celery介绍
- Celery官方文档
- 创建Celery实例并加载配置
- 加载Celery配置
- 定义发送短信任务
- 启动Celery服务
- 调用发送短信任务
- 总结小便条
本章主题
关键词
为什么需要 Celery
- 消费者取到消息之后,要消费掉(执行任务),需要我们去实现。
- 任务可能出现高并发的情况,需要补充多任务的方式执行。
- 耗时任务很多种,每种耗时任务编写的生产者和消费者代码有重复。
- 取到的消息什么时候执行,以什么样的方式执行。
结论
- 实际开发中,我们可以借助成熟的工具
Celery
来完成。 - 有了
Celery
,我们在使用生产者消费者模式时,只需要关注任务本身,极大的简化了程序员的开发流程。
Celery介绍
-
Celery介绍:
• 一个简单、灵活且可靠、处理大量消息的分布式系统,可以在一台或者多台机器上运行;
• 单个 Celery 进程每分钟可处理数以百万计的任务;
• 通过消息进行通信,使用消息队列(broker)
在客户端
和消费者
之间进行协调。 -
安装 Celery
$ pip install Celery
Celery官方文档
Celery官方文档:https://docs.celeryproject.org/en/latest/index.html
创建Celery实例并加载配置
celery_tasks.main.py
# celery启动文件
from celery import Celery
# 创建celery实例
celery_app = Celery('home')
加载Celery配置
celery_tasks.config.py
# 指定消息队列的位置
broker_url = "redis://127.0.0.1/10"
celery_tasks.main.py
# celery启动文件
from celery import Celery
# 创建celery实例
celery_app = Celery('home')
# 加载celery配置
celery_app.config_from_object('celery_tasks.config')
定义发送短信任务
注册任务:celery_tasks.main.py
# celery启动文件
from celery import Celery
# 创建celery实例
celery_app = Celery('home')
# 加载celery配置
celery_app.config_from_object('celery_tasks.config')
# 自动注册celery任务
celery_app.autodiscover_tasks(['celery_tasks.sms'])
定义任务:celery_tasks.sms.tasks.py
@celery_app.task
def send_sms(to, datas, temp_id):
"""发送短信的异步任务"""
ccp = CCP()
try:
result = ccp.send_message(to, datas, temp_id)
except Exception as e:
result = -2
return result
启动Celery服务
celery -A home.tasks.task_sms worker -l info
-A
指对应的应用程序, 其参数是项目中 Celery 实例的位置;worker
指这里要启动的 worker;-l
指日志等级,比如 info
等级。
调用发送短信任务
# Celery异步发送短信验证码
send_sms.delay(mobile, [sms_code, int(constants.SMS_CODE_REDIS_EXPIRES / 60)]
总结小便条
本篇文章主要讲了以下几点内容:
本章回顾暂时就到这了,如果还有点晕,那就把文章里所有引用的案例代码再敲几遍吧。拜拜~