javascript - Node.js https 获取请求 ECONNRESET

标签 javascript node.js asynchronous https

我的问题类似于这个问题:Node Js :is it possible to hit 1000 http get request to some api from a node js server但是他们的 throttle 解决方案对我不起作用。

我正在调用托管在 Google App Engine 上的我们的 api/网站,以触发更新特定产品页面的内存缓存的任务。此函数 updateCacheasync.eachSeries 调用。代码非常简单:(这是经过清理的版本)

function updateCache(object_name, callback) {
  var options = {
    host          : 'www.example.com',
    path          : '/update-cache/' + object_name,
    method        : 'GET',
    agent         : false,
  };
  var req = https.request(options, function(res) {
    res.on('data', function() {
      if (res.statusCode !== 200) {
        console.log('successful');
      }
    });
    res.on('end', function() {
      console.log('end');
      callback();
    });
  });
  req.on('error', function(e) {
    console.log('failed');
    console.error(e.stack);
    callback();
  });
  req.end();
}

它在我的 Mac 机器上运行完美,但我需要脚本在使用 Windows 7 的 Windows PC 上运行,如果它收到此错误:

events.js:141
  throw er; // Unhandled 'error' event
  ^

Error: read ECONNRESET
  at exports._errnoException (util.js:870:11)
  at TCP.onread (net.js:552:26)

最佳答案

我关注了这个solution它看起来像这样:

var req = https.request(options, function(res) {
    res.on('data', function() {
        if (res.statusCode !== 200) {
            // HANDLE
        }
    });
    res.on('end', function() {
        if (res.statusCode !== 200 && app.retry_count < 10) {
            app.retry_count += 1;
            retriggerFunction(param, callback);
        } else {
            app.retry_count = 0;
            return callback();
        }
    });
});
req.on('error', function(e) {
    app.retry_count += 1;
    retriggerFunction(param, callback);
});
req.on('timeout', function(e) {
    app.retry_count += 1;
    retriggerFunction(param, callback);
    req.abort();
});
req.on('uncaughtException', function(e) {
    app.retry_count += 1;
    retriggerFunction(param, callback);
    req.abort();
});

retriggerFunction 只是我将其包装在其中的函数。它可能不“正确”,但它目前正在为我工​​作。如果有人对此有改进,请告诉我

关于javascript - Node.js https 获取请求 ECONNRESET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37195098/

相关文章:

javascript - 响应式倒计时与背景图片对齐

javascript - 在多个 settimeout 上使用 Async/Await

javascript - 如何在使用 *ngFor 时仅将类设置为特定元素?

c++ - 无法使用 node-gyp (C++) 编译 STK (The Synthesis Toolkit)

node.js - 使用 memwatch-node 识别闭包的内存泄漏

javascript - 测试复杂的异步 Redux 操作

javascript - 验证格式为 (123) 456-7891 的电话号码

node.js - Heroku "npm install jugglingdb mongoose"已经做了

c++ - 从 io_context 中删除工作或使用多个 io_context 对象

c# - 将 async/await 与 void 方法一起使用