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.host = os.getenv('BAIDU_SMS_HOST')
|
||||
self.signature_id = os.getenv('BAIDU_SMS_SIGNATURE_ID')
|
||||
|
||||
# 检查必需的环境变量是否都已设置,若缺失则抛出异常
|
||||
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_client = None
|
||||
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):
|
||||
baiDuSmsConfig = BceClientConfiguration(
|
||||
credentials=BceCredentials(self.access_key, self.access_key_secret),
|
||||
@ -98,6 +99,8 @@ class SMSEngine:
|
||||
return sms.SmsClient(baiDuSmsConfig)
|
||||
|
||||
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:
|
||||
f = partial(self.sms_client.send_message, signature_id=self.signature_id,
|
||||
template_id=template_id,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user