[英]Node.js https get request ECONNRESET
我的問題類似於這個問題: 節點Js:是否有可能從節點js服務器向某些api發出1000 http請求,但他們的節流解決方案對我不起作用。
我正在調用我們在Google App Engine上托管的api /網站,以觸發更新特定產品頁面的內存緩存的任務。 從async.eachSeries
調用此函數updateCache
。 代碼很簡單:(這是一個消毒版本)
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)
我按照這個解決方案看起來像這樣:
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
只是我包裝它的函數。它可能不是“正確”但它目前正在為我工作。 如果有人對此有所改進,請告訴我
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.