SendGrid Single Send无法定时调度问题求助
解决SendGrid Python API调度Single Send的两个问题
问题1:传入"now"时出现JSON解析错误
你碰到的json could not be unmarshalled错误,大概率是SendGrid Python SDK的版本或参数结构问题。虽说官方文档标注支持传入"now",但实际调用时,部分SDK版本对字符串"now"的序列化处理存在bug,或者接口实际更接受Unix时间戳而非字符串形式的"now"。
解决办法:
- 放弃直接传字符串"now",改用当前时间的ISO 8601格式字符串(必须带时区,比如用Python代码生成
datetime.utcnow().isoformat() + 'Z'),或者直接传当前时间的Unix时间戳整数(比如int(time.time()))。 - 把你的SendGrid SDK升级到最新版(执行
pip install sendgrid --upgrade),新版本多半修复了这个字符串解析的问题。
问题2:传入ISO时间后Single Send显示为草稿而非已调度
这是因为创建Single Send时默认状态是草稿,你必须额外调用发布Single Send的接口,才能把它从草稿状态切换为已调度状态。
具体操作步骤:
- 先调用创建Single Send的接口,传入格式正确的
send_at(ISO 8601格式且带时区,比如2024-05-20T14:30:00Z),获取返回结果里的id。 - 调用
client.single_sends._(single_send_id).schedule.post()接口完成发布;部分SDK版本也支持在创建Single Send时直接指定status参数为scheduled,一步到位完成调度。
额外注意点:
send_at必须设置为未来时间,如果传入过去的时间,接口会自动将状态设为草稿。- 确保你的API Key拥有
single_sends.write权限,权限不足也会导致状态无法更新。
内容的提问来源于stack exchange,提问作者jaafar Nasrallah
相关产品推荐
相关产品推荐

