【发布时间】:2019-12-20 12:55:55
【问题描述】:
我在 nodejs 中使用无服务器。我有 lambda 函数,其中有大约 6 个 API。 除了一个之外,所有 API 都在工作。但是这个不工作的 api 在本地无服务器离线中工作正常。在服务器中部署后,它的行为会延迟。 这是我在 api 函数中所做的框架
let rec_list = await db.sequelize.query(query).spread(rec_list => { return rec_list; }).catch((e)=>{
console.log("error");
throw e;
})
let rec_list2= rec_list .map((rec_list_sub) => {
//some assignment here
//let new_var = {}; // just assignment - no db operation
return new_var;
});
let resultArr = await Promise.all(rec_list2).then((result) => {
return result;
}).catch((e) => {
throw e;
});
let tem_list = await db.mymodel.bulkCreate(resultArr).then(function (li) {
selectedIds = li.map(({ id }) => {
return {
reqId: id,
description: 'sent',
status: 0
}
});
return li;
}).catch(function (err) {
throw err;
});
//send fcm push
//triggering push notification to user
fcm_send_msg("success", "body-message-here",["fdsfdsfdsf-device-id"]); //*--> Push notification is not triggered. When i hit any of api from this same lambda function, then previously called apis' push notification triggered.*
如果我在 bulkcreate 调用之前放置了 aysnc(尝试使用/不使用 await)的推送通知函数调用,那么它正在工作,但批量创建延迟。
lambda 函数的执行时间是 6 秒,但只用了 108 毫秒。分配了 1024mb 的内存,但仅使用了 120mb。
【问题讨论】:
-
这与您的问题无关,但看到将 Promise.then 使用与 async await 混合使用很奇怪
标签: node.js aws-lambda sequelize.js bulkinsert serverless