我需要在AWS lambda函数中读取并返回一个JSON文件(使用Node 8+),如下所示。
只是想知道这个readFileSync
lambda函数中的async
方法是否会通过阻塞nodejs线程对服务器产生任何影响?
我知道readFileSync
实际上会在继续下一行之前等待加载文件,但是作为包装器方法本身的async
不会清除任何线程阻塞场景?不知道这是如何工作的。请指教。
exports.handler= async (event) => {
var response = {
"statusCode": 200,
"body": ""
};
try {
var data = fs.readFileSync('test.json');
} catch (err) {
return response;
}
response.body = data;
return response;
};
答案 0 :(得分:2)
不,在这种情况下,实际上这可能是最合适的方法。当您收到多个并发请求时,AWS将启动新容器 - 这是无服务器概念的关键;你编写的函数对于并发管理是漠不关心的,所以你可以自由地专注于函数应该实际做的事情。作为回报,AWS lambda框架将确保根据当前需求扩展和减少执行函数的实际容器数。
实际上,如果要将readFileSync更改为异步变体,则必须调用相应的事件回调以确保AWS在等待文件异步结果时不会终止lambda。