node.js lambda函数将记录从sql迁移到elasticsearch,使用队列限制异步调用
我正在尝试在node.js中实现下一个功能:我必须将1.200.000条记录从sql迁移到elasticsearch,我将分批分离50000条记录,一旦我解决了5分钟超时问题,我将在aws lambda中遭遇内存不足问题。我发现这个async.queue限制了Node.js中的异步调用,但我一定是做错了什么,因为它没有按预期工作。我做错了什么?如何限制对importSQLData方法的异步调用 谢谢 这是我的密码:node.js lambda函数将记录从sql迁移到elasticsearch,使用队列限制异步调用,node.js,asynchronous,elasticsearch,lambda,queue,Node.js,Asynchronous,elasticsearch,Lambda,Queue,我正在尝试在node.js中实现下一个功能:我必须将1.200.000条记录从sql迁移到elasticsearch,我将分批分离50000条记录,一旦我解决了5分钟超时问题,我将在aws lambda中遭遇内存不足问题。我发现这个async.queue限制了Node.js中的异步调用,但我一定是做错了什么,因为它没有按预期工作。我做错了什么?如何限制对importSQLData方法的异步调用 谢谢 这是我的密码: exports.importData = function (batchNum,
exports.importData = function (batchNum, topNum, startNum) {
var q = async.queue(function (task, callback) {
console.log('hello ' + task.name);
callback();
}, 2);
q.drain = function () {
console.log('all items have been processed');
}
for (var y = 1; y <= batchNum; y++) {
q.push(importSQLData(topNum, startNum), callback); // I don't know if this is ok
if (y > 1) startNum = startNum + topNum;
importSQLData(topNum, startNum)
.then(function (importRes) {
//console.log(importRes);
console.log("Import successful! Execution Time Time(ms): " + importRes.took);
console.log("memory usage:", process.memoryUsage());
//callback(null, "done");
}).catch(function (importErr) {
let error = {
StatusCode: importErr.status,
Response: importErr.response,
Message: importErr.message
};
let errorMsg = new Error(error.Message);
//context.fail(errorMsg);
callback(errorMsg);
});
}
}
exports.importData=函数(batchNum、topNum、startNum){
var q=async.queue(函数(任务、回调){
log('hello'+task.name);
回调();
}, 2);
q、 排水=功能(){
console.log('所有项目都已处理');
}
对于(var y=1;y),我阅读了异步文档,但没有看到如何在这里实现它。我阅读了异步文档,但没有看到如何在这里实现它。