如何处理大量与承诺所有的请求
我对5000的链接和我需要抓取所有。因此,进出口难怪有没有比这更好的办法。这里是我的代码。
let urls = [ 5000 urls go here ];
const doms = await getDoms(urls);
// processing and storing the doms
getDoms = (urls) => {
let data = await Promise.all(urls.map(url => {
return getSiteCrawlPromise(url)
}));
return data;
}
getSiteCrawlPromise = (url) => {
return new Promise((resolve, reject) => {
let j = request.jar();
request.get({url: url, jar: j}, function(err, response, body) {
if(err)
return resolve({ body: null, jar: j, error: err});
return resolve({body: body, jar: j, error: null});
});
})
}
有没有在承诺实现,因此它可以devide的作业多线程和进程的机制。然后返回输出作为一个整体?我不想devide的URL成较小的碎片和处理这些片段
回答如下:无极对象表示最终完成(或失败)的异步操作的,其结果值。
有没有内置机制的承诺,以“分工作到多线程和进程”。如果你一定要做到这一点,你必须分段的URL数组成更小的阵列,同时排队零散的阵列到单独的履带式实例。
但是,也绝对没有必要走那条路,因为你正在使用节点JS和节点履带,您可以使用节点履带式的maxConnections
选项。这是它是专为与最终的结果将是相同的。你会爬在多线程的网址,而不会浪费时间和精力手工分块和处理多个履带实例,或根据任何并发库。
如何处理大量与承诺所有的请求
我对5000的链接和我需要抓取所有。因此,进出口难怪有没有比这更好的办法。这里是我的代码。
let urls = [ 5000 urls go here ];
const doms = await getDoms(urls);
// processing and storing the doms
getDoms = (urls) => {
let data = await Promise.all(urls.map(url => {
return getSiteCrawlPromise(url)
}));
return data;
}
getSiteCrawlPromise = (url) => {
return new Promise((resolve, reject) => {
let j = request.jar();
request.get({url: url, jar: j}, function(err, response, body) {
if(err)
return resolve({ body: null, jar: j, error: err});
return resolve({body: body, jar: j, error: null});
});
})
}
有没有在承诺实现,因此它可以devide的作业多线程和进程的机制。然后返回输出作为一个整体?我不想devide的URL成较小的碎片和处理这些片段
回答如下:无极对象表示最终完成(或失败)的异步操作的,其结果值。
有没有内置机制的承诺,以“分工作到多线程和进程”。如果你一定要做到这一点,你必须分段的URL数组成更小的阵列,同时排队零散的阵列到单独的履带式实例。
但是,也绝对没有必要走那条路,因为你正在使用节点JS和节点履带,您可以使用节点履带式的maxConnections
选项。这是它是专为与最终的结果将是相同的。你会爬在多线程的网址,而不会浪费时间和精力手工分块和处理多个履带实例,或根据任何并发库。