node.js lambda函数将logging从sql迁移到elasticsearch,使用队列限制asynchronous调用

我试图在node.js中实现下一个function:我必须从sql到1.200.000logging迁移到elasticsearch,我分成5万批次,一旦我解决了5分钟超时问题,我痛苦了这一点内存问题的aws lambda。 我发现这个async.queue限制在Node.js中的asynchronous调用,但我一定是做错了,因为它不能按预期工作。 我究竟做错了什么? 我怎样才能限制asynchronous调用importSQLData方法?

谢谢。

这是我的代码:

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); }); } 

}