fix: SMSEngine 缺百度短信环境变量不抛异常(延迟检查),避免 load_smssend 中断致 sms_engine 未注册 NameError
This commit is contained in:
parent
387daacfd5
commit
2503203f6d
@ -78,18 +78,19 @@ class SMSEngine:
|
|||||||
self.access_key_secret = os.getenv('BAIDU_SMS_ACCESS_KEY_SECRET')
|
self.access_key_secret = os.getenv('BAIDU_SMS_ACCESS_KEY_SECRET')
|
||||||
self.host = os.getenv('BAIDU_SMS_HOST')
|
self.host = os.getenv('BAIDU_SMS_HOST')
|
||||||
self.signature_id = os.getenv('BAIDU_SMS_SIGNATURE_ID')
|
self.signature_id = os.getenv('BAIDU_SMS_SIGNATURE_ID')
|
||||||
|
self.sms_client = None
|
||||||
# 检查必需的环境变量是否都已设置,若缺失则抛出异常
|
|
||||||
required_vars = [self.access_key, self.access_key_secret, self.host, self.signature_id]
|
|
||||||
if not all(required_vars):
|
|
||||||
missing = [name for name, val in zip(
|
|
||||||
['BAIDU_SMS_ACCESS_KEY', 'BAIDU_SMS_ACCESS_KEY_SECRET', 'BAIDU_SMS_HOST', 'BAIDU_SMS_SIGNATURE_ID'],
|
|
||||||
required_vars) if val is None]
|
|
||||||
raise EnvironmentError(f"Missing required environment variables: {', '.join(missing)}")
|
|
||||||
|
|
||||||
self.sms_client = self.create_client()
|
|
||||||
self.sms_types = {}
|
self.sms_types = {}
|
||||||
|
|
||||||
|
# 缺环境变量不抛异常(否则 load_smssend 中断 → sms_engine 未注册 → dspy 里 NameError)。
|
||||||
|
# 延迟到真正发送时检查,返回明确错误。
|
||||||
|
missing = [name for name, val in zip(
|
||||||
|
['BAIDU_SMS_ACCESS_KEY', 'BAIDU_SMS_ACCESS_KEY_SECRET', 'BAIDU_SMS_HOST', 'BAIDU_SMS_SIGNATURE_ID'],
|
||||||
|
[self.access_key, self.access_key_secret, self.host, self.signature_id]) if not val]
|
||||||
|
if missing:
|
||||||
|
error(f'百度短信未配置,缺少环境变量: {", ".join(missing)}(发送短信时会返回错误)')
|
||||||
|
return
|
||||||
|
self.sms_client = self.create_client()
|
||||||
|
|
||||||
def create_client(self):
|
def create_client(self):
|
||||||
baiDuSmsConfig = BceClientConfiguration(
|
baiDuSmsConfig = BceClientConfiguration(
|
||||||
credentials=BceCredentials(self.access_key, self.access_key_secret),
|
credentials=BceCredentials(self.access_key, self.access_key_secret),
|
||||||
@ -98,6 +99,8 @@ class SMSEngine:
|
|||||||
return sms.SmsClient(baiDuSmsConfig)
|
return sms.SmsClient(baiDuSmsConfig)
|
||||||
|
|
||||||
async def send(self, stype, template_id, phone, params) -> dict:
|
async def send(self, stype, template_id, phone, params) -> dict:
|
||||||
|
if self.sms_client is None:
|
||||||
|
return {'status': False, 'msg': '百度短信未配置,请设置 BAIDU_SMS_ACCESS_KEY 等环境变量'}
|
||||||
try:
|
try:
|
||||||
f = partial(self.sms_client.send_message, signature_id=self.signature_id,
|
f = partial(self.sms_client.send_message, signature_id=self.signature_id,
|
||||||
template_id=template_id,
|
template_id=template_id,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user