Skip to main content

Python异步提交短信的模块

Project description

1、SmsHttpChannel介绍

​ SmsHttpChannel模块是用于异步短信接口的发送,主要依赖于Tornado框架中的AsyncHTTPClient模块。

2、接口所属

​ 主要用于无锡线上线下通讯信息技术股份有限公司的短信接口

3、短信接口协议文档

v3 : http://doc.wxxsxx.com/

v4: https://api-wiki.wxxsxx.com/

4、代码示例

4.1、单内容多号码批量发送
import logging
from typing import Dict
from xsxx.xsxx_channel import SmsV3HttpChannel,SmsV4HttpChannel

def submit_callback(response: Dict):
    """
        定义提交短信后的回调的处理函数
    """
    logging.info(response)

if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    logger = logging.getLogger(__name__)

    url = 'https://ip:port'
    userId = 'xxxx'
    password = 'xxxxx'

    # http_channel = SmsV3HttpChannel(url=url, userId=userId, password=password)  # V3协议
    http_channel = SmsV4HttpChannel(url=url, userId=userId, password=password)  # V4协议

    request_list = list()
    request_list.append(http_channel.one_content_phones(content='【线上线下】你的验证码:8888', mobile='1314342139x'))
    request_list.append(http_channel.one_content_phones(content='【线上线下】你的验证码:8888', mobile='1314342139x'))
    request_list.append(http_channel.one_content_phones(content='【线上线下】你的验证码:8888', mobile='1314342139x'))
    http_channel.send_request(http_channel, request_list, callback_func=submit_callback)

    """
    输出的结果:
        2020-11-26 23:26:16,812 - root - INFO - {'status': 0, 'msgid': '-4801649735315642901'}
        2020-11-26 23:26:16,829 - root - INFO - {'status': 0, 'msgid': '-4801649735315642900'}
        2020-11-26 23:26:16,861 - root - INFO - {'status': 0, 'msgid': '-4801649735315642899'}
    """
4.2、 预付费账号余额查询
import logging
from typing import Dict
from xsxx.xsxx_channel import SmsV3HttpChannel,SmsV4HttpChannel

def balance_callback(response: Dict):
    """
        查询余额请求后的回调的处理函数
    """
    logging.info(response)

if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    logger = logging.getLogger(__name__)

    url = 'https://ip:port'
    userId = 'xxxx'
    password = 'xxxxx'

    # http_channel = SmsV3HttpChannel(url=url, userId=userId, password=password)  # V3协议
    http_channel = SmsV4HttpChannel(url=url, userId=userId, password=password)  # V4协议

    request_list = list()
    request_list.append(http_channel.get_user_balance())
    http_channel.send_request(http_channel, request_list, callback_func=balance_callback)
4.3、上行主动获取
import logging
from typing import Dict
from xsxx.xsxx_channel import SmsV3HttpChannel,SmsV4HttpChannel

def mo_callback(response: Dict):
    """
        查询上行请求后的回调的处理函数
    """
    logging.info(response)

if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    logger = logging.getLogger(__name__)

    url = 'https://ip:port'
    userId = 'xxxx'
    password = 'xxxxx'

    # http_channel = SmsV3HttpChannel(url=url, userId=userId, password=password)  # V3协议
    http_channel = SmsV4HttpChannel(url=url, userId=userId, password=password)  # V4协议

    request_list = list()
    request_list.append(http_channel.get_mo())
    http_channel.send_request(http_channel, request_list, callback_func=mo_callback)

    """
    输出的结果:
        2020-11-26 23:55:27,590 - root - INFO - {'status': 0, 'result': []}
    """
4.4、状态报告主动获取
import logging
from typing import Dict
from xsxx.xsxx_channel import SmsV3HttpChannel,SmsV4HttpChannel

def report_callback(response: Dict):
    """
        定义状态请求后的回调的处理函数
    """
    logging.info(response)

if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    logger = logging.getLogger(__name__)

    url = 'https://ip:port'
    userId = 'xxxx'
    password = 'xxxxx'

    # http_channel = SmsV3HttpChannel(url=url, userId=userId, password=password)  # V3协议
    http_channel = SmsV4HttpChannel(url=url, userId=userId, password=password)  # V4协议

    request_list = list()
    request_list.append(http_channel.get_report())
    http_channel.send_request(http_channel, request_list, callback_func=report_callback)

    """
    输出的结果:
        2020-11-26 23:57:14,371 - root - INFO - {'status': 0, 'result': []}
    """
4.5、获取发送账号日统计[V4协议支持]
import logging
from typing import Dict
from xsxx.xsxx_channel import SmsV4HttpChannel

def daily_stats(response: Dict):
    """
        日统计报表请求后的回调的处理函数
    """
    logging.info(response)

if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    logger = logging.getLogger(__name__)

    url = 'https://ip:port'
    userId = 'xxxx'
    password = 'xxxxx'

    #  获取发送账号日统计
    http_channel = SmsV4HttpChannel(url=url, userId=userId, password=password)
    request_list = list()
    request_list.append(http_channel.get_daily_stats())
    http_channel.send_request(http_channel, request_list, callback_func=daily_stats)

5、多线程多协程提交短信的示例

import threading
import logging
from typing import Dict
from xsxx.xsxx_channel import SmsV3HttpChannel

def submit_callback(response: Dict):
    """
        提交短信的回调函数
    """
    logging.info(response)

if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    logger = logging.getLogger(__name__)

    url = 'https://ip:port'
    userId = 'xxxx'
    password = 'xxxxx'

    # http_channel = SmsV3HttpChannel(url=url, userId=userId, password=password)  # V3协议
    http_channel = SmsV4HttpChannel(url=url, userId=userId, password=password)  # V4协议

    request_list = list()
    request_list.append(http_channel.one_content_phones(content='【线上线下】你的验证码:8888', mobile='1314342139x'))
    request_list.append(http_channel.one_content_phones(content='【线上线下】你的验证码:8888', mobile='1314342139x'))
    request_list.append(http_channel.one_content_phones(content='【线上线下】你的验证码:8888', mobile='1314342139x'))

    # 多线程多协程的运行任务
    task_list = []

    for task in range(3):
        task_start = threading.Thread(target=http_channel.send_request,
                                      args=(http_channel, request_list, submit_callback))
        task_start.start()
        task_list.append(task_start)

    for task in task_list:
        task.join()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

SmsHttpChannel-0.0.2.tar.gz (6.4 kB view hashes)

Uploaded Source

Built Distribution

SmsHttpChannel-0.0.2-py3-none-any.whl (7.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page