首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速生成10,000个HTTP请求

快速生成10,000个HTTP请求
EN

Stack Overflow用户
提问于 2022-01-23 13:33:21
回答 1查看 323关注 0票数 0

我想提出10,000个并发HTTP请求。我目前正在使用Promise.all来完成这个任务。然而,我似乎在某种程度上受到了限制,大约需要15-30分钟才能完成所有10,000份请求。在axios中,还是在节点中的http请求中,有什么东西限制了我?如果有,我怎么才能把腿抬起来?

代码语言:javascript
复制
const axios = require('axios');

function http_request(url) {
    return new Promise(async (resolve) => {
        await axios.get(url);
        // -- DO STUFF
        resolve();
    });
}

async function many_requests(num_requests) {
    let all_promises = [];
    for (let i = 0; i < num_requests; i++) {
        let url = 'https://someurl.com/' + i;
        let promise = http_request(url);
        all_promises.push(promise);
    }
    return Promise.all(all_promises);
}

async function run() {
    await many_requests(10000);
}

run();
EN

回答 1

Stack Overflow用户

发布于 2022-01-23 14:06:18

在Node.js中有两种类型的线程:一个事件循环(也就是主循环、主线程、事件线程等)和一个工人池中的k Worker池(也就是线程池)。 ..。 Node.js的Worker池是在libuv (docs)中实现的,它公开了一个通用任务提交API。

事件循环在线程中运行,将任务推送到k Worker池。这些工人会并行运行。池中的默认工作数为4。您可以设置更多。

来源

利布夫

默认UV_THREADPOOLSIZE为4,可以将UV_THREADPOOLSIZE设置为链接。它的限制取决于os,您需要检查您的os:

大小

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70822575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档