zoukankan      html  css  js  c++  java
  • 使用celery发送手机验证码

    创建Celery实例并加载配置

    1.定义Celery包

      

     2.创建Celery实例

      

     celery_tasks.main.py

    # celery启动文件
    from celery import Celery
    
    
    # 创建celery实例
    celery_app = Celery('meiduo')

    celery_tasks.config.py

    # 指定消息队列的位置
    broker_url= 'amqp://guest:guest@192.168.103.158:5672'

    celery_tasks.main.py
    # celery启动文件
    from celery import Celery
    # 创建celery实例
    celery_app = Celery('meiduo')
    # 加载celery配置
    celery_app.config_from_object('celery_tasks.config')

    3. 定义发送短信任务

    1.注册任务:celery_tasks.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'])

    2.定义任务:celery_tasks.sms.tasks.py

    # 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)
    def ccp_send_sms_code(self, mobile, sms_code):
        """
        发送短信异步任务
        :param mobile: 手机号
        :param sms_code: 短信验证码
        :return: 成功0 或 失败-1
        """
        try:
            send_ret = CCP().send_template_sms(mobile, [sms_code, constants.SMS_CODE_REDIS_EXPIRES // 60], constants.SEND_SMS_TEMPLATE_ID)
        except Exception as e:
            logger.error(e)
            # 有异常自动重试三次
            raise self.retry(exc=e, max_retries=3)
        if send_ret != 0:
            # 有异常自动重试三次
            raise self.retry(exc=Exception('发送短信失败'), max_retries=3)
    
        return send_ret

    4. 启动Celery服务

    $ cd ~/projects/meiduo_project/meiduo_mall
    $ celery -A celery_tasks.main worker -l info

    5. 调用发送短信任务

     
    # 发送短信验证码
    # CCP().send_template_sms(mobile,[sms_code, constants.SMS_CODE_REDIS_EXPIRES // 60], constants.SEND_SMS_TEMPLATE_ID)
    # Celery异步发送短信验证码
    ccp_send_sms_code.delay(mobile, sms_code)
     
  • 相关阅读:
    raspi扩展板
    树莓派学习笔记——I2C设备载入和速率设置
    python多线程(四)
    python多线程(三)
    python多线程(二)
    python3.x对python2.x变动
    python多线程(一)
    raspi集成库及安装
    eclipse软件安装及python工程建立
    原型模式
  • 原文地址:https://www.cnblogs.com/csp813/p/14787576.html
Copyright © 2011-2022 走看看