Python遍历用户字典列表实现带个性化参数的Twilio短信发送问题
错误原因
- 内层遍历字典的逻辑完全错误:你存储每个用户信息的字典包含
User、Number、days三个独立键,直接按键取值即可,不需要遍历d.items(),遍历反而会把三个键值对全部循环一次,导致参数完全错位。 - 剩余天数取值错误:每个用户的到期剩余天数已经提前存入字典的
days字段,不需要再调用全局的days_left.days,避免所有用户的短信都用同一个天数。
修正后的完整代码
def send_sms(): client = Client(twilio_account_sid, twilio_auth_token) send_count = 0 for user_info in users: # 直接按键提取当前用户的对应字段 username = user_info['User'] phone = user_info['Number'] remain_days = user_info['days'] message = client.messages.create( to=phone, from_=twilio_from_phone_number, body=f'Hello {username}, you have {remain_days} days left to reset your password. -IT' ) print(message.sid) send_count += 1 self.app.log.info(f'Sent {send_count} sms msgs to users') send_sms()
可选优化建议
- 可以添加异常捕获逻辑,避免单个用户手机号无效、字段为空等问题导致整个发送流程中断
- 发送前可增加阈值判断,仅给剩余天数为30/15/3的用户发送提醒,避免无效推送
内容的提问来源于stack exchange,提问作者troy
相关产品推荐
相关产品推荐

