首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Gmail的"500后端错误“-安全重试?

使用Gmail的"500后端错误“-安全重试?
EN

Stack Overflow用户
提问于 2017-04-26 05:06:29
回答 2查看 4.8K关注 0票数 7

我正在通过Gmail发送消息。特别是,我试图从同一个帐户发送5-7封电子邮件给不同的用户(每个用户在大约2秒内)。

其中约有8%的电子邮件因这一错误而失败:

代码语言:javascript
复制
&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的电子邮件可能会成功。

我犹豫不决重新尝试,因为害怕发送两封电子邮件给同一个人。

是否有任何方法可以判断此消息是否安全可重试?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-27 15:48:55

有时可以在发送之前发生,有时在发送之后发生。

我记录了五个不同的电子邮件尝试中的"To“和" from”,这些邮件都收到了500个后端错误。所有这些尝试都无法进入我收件箱的“发送”文件夹。我的结论是,它们从未被发送过,重新尝试这些消息是安全的。但是,评论中的其他人(见下文)指出,这些消息实际上已发送到远程邮箱,重试是不安全的。

票数 0
EN

Stack Overflow用户

发布于 2017-04-26 07:02:06

“代码”:500,“消息”:“后端错误”

基本上是谷歌服务器的问题。您要发出的请求或者是发送给long的请求,或者是预先形成请求的服务器正忙着,而请求又花了很长时间。听起来你所做的并不是造成问题的原因。

小贴士:不要在你将要完成的每一个设置cron作业的时间运行,也不要在午夜运行(PDT),因为这是配额重置的时候,您将再次完成与昨天的配额被吹灭的每个人。

解决方案:

通常的解决方案是等待几秒钟,然后再次发送相同的请求。(实现指数退避)

实现简单指数退避的流程如下。

  1. 向API发出请求
  2. 接收具有可重试错误代码的错误响应。
  3. 等待1s + random_number_milliseconds秒
  4. 重试请求
  5. 接收具有可重试错误代码的错误响应。
  6. 等待2s + random_number_milliseconds秒
  7. 重试请求
  8. 接收具有可重试错误代码的错误响应。
  9. 等待4s + random_number_milliseconds秒
  10. 重试请求
  11. 接收具有可重试错误代码的错误响应。
  12. 等待8s + random_number_milliseconds秒
  13. 重试请求
  14. 接收具有可重试错误代码的错误响应。
  15. 等待16s + random_number_milliseconds秒
  16. 重试请求

如果仍然有错误,停止并记录错误。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43625472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档