173. Python语言 的 Flask框架项目 之 异步方案 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 等级。

173. Python语言 的 Flask框架项目 之 异步方案 Celery 第二章:Celery 介绍和使用

  

调用发送短信任务

# Celery异步发送短信验证码
send_sms.delay(mobile, [sms_code, int(constants.SMS_CODE_REDIS_EXPIRES / 60)]

  

总结小便条

本篇文章主要讲了以下几点内容:

  

  本章回顾暂时就到这了,如果还有点晕,那就把文章里所有引用的案例代码再敲几遍吧。拜拜~

上一篇:celery异步发邮件


下一篇:celery task异步任务