【发布时间】:2020-02-18 19:13:08
【问题描述】:
我有以下代码:
var request = require('request');
var rp = require('request-promise');
module.exports = async function(context, req) {
var arr = [[url1],[url2]]
for (i = 0; i < arr.length; i++) {
func(context, arr[i]);
}
}
function func(context, urls) {
const promises = urls.map(item => {
return rp({
uri: item,
simple: false,
resolveWithFullResponse: true
}).then(response => {
if (response.statusCode == 403) {
var msg = "hello";
return msg;
} else {
return null;
}
});
});
return Promise.all(promises).then(data => {
// remove null results from array
return data.filter(item => item !== null);
});
}
而且我不断收到此错误。有时有效,有时无效。我该如何解决这个问题,为什么它有时会起作用,有时会不起作用。
Result: Failure
Exception: RequestError: Error: connect ETIMEDOUT
我需要包含pool 选项吗?或者是timeout?错误似乎是由于arr 的大小造成的。
【问题讨论】:
-
现在有更新吗?如果它对你有帮助,你可以接受它作为答案。
-
我用
agent: false, pool: { maxSockets: 8 }解决了这个问题 -
我在回复中更新了它。您可以接受它作为答案,或者您发布另一个回复以让其他人知道并关闭此问题。
-
完成了,谢谢。您能解释一下为什么代理/套接字解决方案有效,以便我进一步理解吗?
标签: node.js azure request-promise azure-function-app