Files
2026-06-02 17:46:38 +08:00

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
)