首页 > 编程语言 >python celery异步发送短信

python celery异步发送短信

时间:2023-03-15 17:11:23浏览次数:46  
标签:异步 code python sms send celery tasks import

前言

 

Celery 易于使用和维护,并且它 不需要配置文件 。

 

Celery 有一个活跃、友好的社区来让你寻求帮助,包括一个 邮件列表 和一个 IRC 频道 。

倘若连接丢失或失败,职程和客户端会自动重试,并且一些中间人通过 主/主 或 主/从 方式复制来提高可用性。

使用Celery完成发送短信

meiduo/meiduo_mall下创建celery_tasks用于保存celery异步任务。

在celery_tasks目录下创建config.py文件,用于保存celery的配置信息

broker_url = "redis://127.0.0.1/14"

 

在celery_tasks目录下创建main.py文件,用于作为celery的启动文件

from celery import Celery
import os
if not os.getenv('DJANGO_SETTINGS_MODULE'):
    os.environ['DJANGO_SETTINGS_MODULE'] = 'lgshop.dev'

#celery入口文件
#创建celery实列
celery_app = Celery('lg')

#加载配置文件
celery_app.config_from_object('celery_tasks.config')

#注册任务
celery_app.autodiscover_tasks(['celery_tasks.sms','celery_tasks.email'])

#启动celery
#   celery -A celery_tasks.main worker  -l info --pool=solo

在celery_tasks目录下创建sms目录,用于放置发送短信的异步任务相关代码。

将提供的发送短信的云通讯SDK放到celery_tasks/sms/目录下。

在celery_tasks/sms/目录下创建tasks.py文件,用于保存发送短信的异步任务

#定义任务:发送短信
from celery_tasks.main import celery_app
from celery_tasks.sms.ronglianyun import constants
from celery_tasks.sms.ronglianyun.ccp_sms import CCP

@celery_app.task(name='send_sms_code')
def send_sms_code(mobile,sms_code):
    """
    发送短信验证码异步任务
    :param mobile:手机号
    :param sms_code:短信验证码
    :return:成功 0 失败 1
    """

    send_ret = CCP().send_message(mobile, (sms_code, constants.SMS_CODE_REDIS_EXPIPES // 60), constants.SEND_SMS_TEMPLATE_ID)
    return send_ret

云通讯代码

from ronglian_sms_sdk import SmsSDK
import json
accountSid = '自己的'

# 说明:主账号Token,登陆云通讯网站后,可在控制台-应用中看到开发者主账号AUTH TOKEN
accountToken = '自己的'

# 请使用管理控制台首页的APPID或自己创建应用的APPID
appId = '自己的'

#单列设计模式
class CCP(object):
    def __new__(cls, *args, **kwargs):
        #如果是第一次实例化,返回实例化对象,如果是第二次实例化,返回上一次实例话

        #判断是否存在类属性_instance
        if not hasattr(cls,'_instance'):
            cls._instance = super(CCP, cls).__new__(cls,*args,**kwargs)
            cls._instance.sdk = SmsSDK(accountSid,accountToken,appId)
        return cls._instance

    def send_message(self,msilib,datas,tid):
        sdk = self._instance.sdk
        # tid = '1'
        # msilib = '13397680341'
        resp = sdk.sendMessage(tid,msilib,datas)
        result = json.loads(resp)
        if result['statusCode']=='000000':
            return 0
        else:
            return -1
if __name__ == '__main__':
    c = CCP()
    c.send_message('自己的手机号',('123','5'),1)
    pass

在自己的app中的views使用celery异步任务发送短信

如:

from celery_tasks.sms import tasks as sms_tasks

class SMSCodeView(GenericAPIView):
    ...
        # 发送短信验证码
        sms_code_expires = str(constants.SMS_CODE_REDIS_EXPIRES // 60)
        sms_tasks.send_sms_code.delay(mobile, sms_code, sms_code_expires)

        return Response({"message": "OK"})

 

标签:异步,code,python,sms,send,celery,tasks,import
From: https://www.cnblogs.com/wzcc/p/17219209.html

相关文章

  • 大爽Python入门教程 7-8 实践演示* 控制台版本——简易回合战斗
    大爽Python入门公开课教案点击查看教程总目录1背景介绍不知道大家有没有玩过魔塔。在我小时候,这是一个很经典又好玩的小游戏。其实最早想做一个控制台版本的简易魔......
  • 大爽Python入门教程 7-7 异常处理 try ... except Exception
    大爽Python入门公开课教案点击查看教程总目录1什么是异常Exception简单来讲,错误Error就是异常Exception。具体的,我们先来看几个错误。>>>2:3SyntaxError:illega......
  • Python让selenium代码执行完毕不关闭浏览器的方法
    pythonselenium在默认情况下,执行完业务逻辑的时候,浏览器也会进行自动关闭,如何让浏览器能够不退呢?下面给出一种我认为比较简单的解决方案供大家进行参考。用ChromeOption......
  • python文件操作
    一、文件编码 编码技术:翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容;   计算机中有许多可用编码:UTF-8、GBK、Big5等; UTF-8是目前......
  • Java+Redis 通过Lua 完成库存扣减,创建消息队列,异步处理消息--实战
    需要完成功能借助redisStream数据结构实现消息队列,异步完成订单创建,其中涉及到了缓存(击穿,穿透,雪崩),锁(Redisson),并发处理,异步处理,Lua脚本IDE:IDEA2022 1、读取库存数......
  • Python环境准备
    一、Python解释器的下载安装1、下载下载地址:https://www.python.org/downloads/release/python-364/ 2、安装双击可执行文件,勾选【添加环境变量】,按提示操作安装即可......
  • python实现iOS手机模拟弱网
    一、需求描述有时候在我们测试的时候需要模拟弱网去测试一些异常场景,因此使用python实现了iOS手机模拟弱网的方式。二、模拟方式首先电脑连机ios手机,然后执行如......
  • python 字符串编码
     测试网站1:http://www.msxindl.com/tools/unicode16.asp如 \ud83d\udc15从Unicode还原是一只......
  • #Python 计算地理经纬度距离
    一:X-MIND二:计算两点经纬度之间的距离经纬度是利用三维球面空间来描述地球上一个位置的坐标系统,每个经纬度坐标由经度lng和纬度lat两个分量组成。经纬度的有效范围为......
  • python-mss 截图简单示例
    python-mss是一个速度非常快的截图和录像工具,支持跨平台,使用纯python语言开发。pipinstallmss截取指定区域并保存为png#encoding=utf-8importmsswithms......