【问题标题】:ETIMEDOUT error when making a request to sendgrid API向 sendgrid API 发出请求时出现 ETIMEDOUT 错误
【发布时间】:2021-04-03 04:32:36
【问题描述】:

我正在使用节点 js 请求模块通过 sendgrid 发送电子邮件。我收到错误 ETIMEDOUT。我打算使用node-retry npm 模块重试发送,但是如何检测错误代码是什么? sendgrid API 是否以某种方式返回错误代码?此外,当我确实检测到错误代码时,是否只是等待 X 秒再次发送电子邮件的问题?如果是,我如何确定 X 是什么?

_makeAPIRequest (httpMethod, url, body) {
    var defer = Q.defer();
    var options = {
        method: httpMethod,
        url: this.SENDGRID_API_URL + url,
        headers: {
            'content-type': 'application/json',
            authorization: 'Bearer ' + SENDGRID_API_KEY
        },
        body: body,
        json: true
    };

    request(options, function (error, response, body) {
        if (error) {
            console.dir(error);
            return defer.reject(error);
        }
        defer.resolve(body);
    });
    return defer.promise;
}

【问题讨论】:

    标签: node.js request sendgrid-api-v3


    【解决方案1】:

    ETIMEDOUT 是操作系统错误消息。它表示在 TCP/IP 级别尝试连接到远程主机失败,可能是SENDGRID_API_URL 中提到的主机。

    默认值为https://api.sendgrid.com/v3/。由于某种原因,可能是出站防火墙或某种网络配置问题,您的 nodejs 程序无法访问该 URL,并等待响应。您应该检查该 URL 的值。

    如果这是间歇性的(并非一直发生),您可能可以等待几秒钟再试一次。

    如果它在您发送大量电子邮件后开始发生,您可能在 sendgrid 中遇到了限制。安排您发送电子邮件的时间;尝试在它们之间延迟半秒。

    【讨论】:

      猜你喜欢
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      相关资源
      最近更新 更多