问题描述
我正在使用axios.all一次打我所有的帖子。这是我的代码
=INDEX(Table2[[#All],[fastener]],AGGREGATE(15,6,IFERROR(ROW(Table2[fastener])/(([@diameter]>=Table2[min])*([@diameter]<=Table2[max])),ROW(Table2[fastener])/([@diameter]<=Table2[min])),1))
这可以很好地处理1000的数据大小。但是当数据大小为1000时,我会收到etimedout错误。请为此提供任何解决方案。我尝试将http agentalive设置为true,但没有用。
解决方法
我通过一次发出50个请求来解决该问题,直到总数达到50k。如果有人使用axios遇到问题,那么这里就是我的代码。
let start = new Date();
let count = 0;
const chunkSize = 50;
let limit = chunkSize;
let skip = 0;
console.log('Inserting excel data in chunks');
function recursiveFun() {
skip = chunkSize * count;
count++;
limit = chunkSize * count;
console.log('skip',skip);
console.log('limit',limit);
const chunkedData = data.slice(skip,limit);
let chunkUrls = [];
chunkedData.forEach(inventory => {
const userData = {
stream: stream_name,key: inventory.serialNumber,address: address,data: inventory,};
const postRequest = axios.post(
`${blockchain_service_url}/publishExcelData`,userData,);
chunkUrls.push(postRequest);
});
axios
.all(chunkUrls)
.then(
axios.spread(async (...responses) => {
const inventoryData = responses.map(
response => response.data,);
// use/access the results
console.log(inventoryData.length);
console.log(inventoryData[0].transactionId);
InventoryModel.insertMany(inventoryData,(err,res) => {
if (err) {
console.log(err.errmsg);
} else
console.log(
'Number of documents inserted into mongo: ' +
res.length,);
});
if (limit !== data.length) {
recursiveFun();
} else {
console.log(
'Insertion of excel sheet data is completed. Time Taken in seconds - ',(new Date() - start) / 1000,);//Insertion of excel sheet data is completed. Time Taken to post and insert 50k records in seconds - 585.385
}
}),)
.catch(errors => {
// react on errors.
console.error(errors);
});
}
recursiveFun();