52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
import asyncio
|
|
from tornado.httpclient import HTTPResponse, HTTPRequest
|
|
|
|
import dock
|
|
from dock.dcm import dcm_api
|
|
from paste.core.logging import echo_log
|
|
from paste.web import requests
|
|
import apps
|
|
|
|
|
|
async def get_send_sms_request(body):
|
|
"""
|
|
创建发送短信的请求对象。方法仅创建请求对象,并未实际提交请求,具体由调度方法处理。
|
|
|
|
:param body: 短信参数字典
|
|
:return: HTTPRequest 对象
|
|
"""
|
|
api_url = '/home/sms/sendwfsms'
|
|
sms_request = await dcm_api.new_api_request(api_url, body)
|
|
return sms_request
|
|
|
|
|
|
async def after_send_sms_request(response: HTTPResponse, retry_queue: asyncio.Queue[HTTPRequest]):
|
|
"""
|
|
提交数字城管后的处理程序。
|
|
|
|
:param response: 响应对象
|
|
:param retry_queue: 重试队列
|
|
"""
|
|
echo_log(response.body.decode())
|
|
echo_log('发送短信成功')
|
|
|
|
|
|
async def send_sms(body):
|
|
"""
|
|
调用数字城管的发送短信接口
|
|
|
|
:param body: 短信参数字典
|
|
"""
|
|
echo_log('正在准备发送短信...')
|
|
sms_request = await get_send_sms_request(body)
|
|
sms_queue = asyncio.Queue()
|
|
await sms_queue.put(sms_request)
|
|
if apps.get_active_env() in ('dev', '', None):
|
|
echo_log(f"非生产环境,不实际提交.")
|
|
return
|
|
|
|
await requests.async_concurrency(
|
|
sms_queue, con_count=dock.CONCURRENCY_COUNT, retry=dock.MAX_RETRY_COUNT,
|
|
after_request=after_send_sms_request
|
|
)
|