我有一个脚本,我在一个循环内启动了几个http请求。假设我必须发出1000个http请求。
问题是每个IP只能执行一个http请求,而我只有10个IP。
因此,在10个并行请求之后,我必须等待响应才能做出另一个响应。
我如何在不阻止脚本的情况下等待来自http请求的一个响应来启动另一个请求?
我的问题是,如果我在等待免费IP的同时执行了一段时间,则整个脚本被阻止了,并且没有收到任何响应。
为此使用异步模块。
您可以使用async#eachLimit
将并发请求限制为10个。
var urls = [
// a list of 100 urls
];
function makeRequest(url, callback) {
/* make a http request */
callback(); // when done, callback
}
async.eachLimit(urls, 10, makeRequest, function(err) {
if(err) throw err;
});
此代码将遍历URL列表,并makeRequest
为每个URL调用。它将在10个并发请求处停止,并且直到前10个请求之一完成后才会继续处理第11个请求。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句