我正在通过Gmail API发送邮件。特别是,我尝试在2秒钟内将5-7封来自同一帐户的电子邮件发送给不同的用户(每封电子邮件1封)。
这些电子邮件中约有8%出现此错误而失败:
&googleapi.Error{
    Code:500, 
    Message:"Backend Error", Body:`{
        "error": {
            "errors": [
            {
                "domain": "global",
                "reason": "backendError",
                "message": "Backend Error"
            }
            ],
            "code": 500,
            "message": "Backend Error"
        }
    }`, 
    Header:http.Header(nil),
    Errors:[]googleapi.ErrorItem{
        googleapi.ErrorItem{Reason:"backendError", Message:"Backend Error"}
    }
}
似乎并非特定于特定帐户,因为6/7电子邮件可能会成功。
我犹豫要重试此操作,因为担心会向同一个人发送2封电子邮件。
有什么办法可以告诉您此消息是否可以重试?
“代码”:500,“消息”:“后端错误”
基本上是谷歌服务器的问题。您发出的请求花费了很长时间,或者执行请求的服务器很忙并且请求再次花费了很长时间。听起来您正在做的事情不应该导致问题。
不运行时的提示:不要在您将与设置了 cron 作业的每个人一起完成的时间运行,也不要在午夜 (PDT) 运行,因为这是配额重置的时间,并且您将再次与所有设置了 cron 作业的人一起完成爆掉昨天的配额。
解决方案:
正常的解决方案是等待几秒钟,然后再次发送相同的请求。(实现指数退避)
实现简单指数退避的流程如下。
如果仍然出现错误,请停止并记录错误。
有时它可能发生在发送之前,有时发生在发送之后。
我记录了五次不同的电子邮件尝试中的“收件人”和“发件人”,这些邮件均收到 500 后端错误。这些尝试都没有进入我收件箱的“已发送”文件夹。我的结论是它们从未发送过,并且可以安全地重试这些消息。然而,评论中的其他人(见下文)指出,邮件实际上已发送到远程邮箱,并且重试并不安全。
| 归档时间: | 
 | 
| 查看次数: | 3557 次 | 
| 最近记录: |