NodeJs / Lambda函数在异步方法中从readFileSync返回数据性能影响

时间:2018-04-18 07:31:52

标签: node.js async-await aws-lambda async.js

我需要在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;    
};

1 个答案:

答案 0 :(得分:2)

不,在这种情况下,实际上这可能是最合适的方法。当您收到多个并发请求时,AWS将启动新容器 - 这是无服务器概念的关键;你编写的函数对于并发管理是漠不关心的,所以你可以自由地专注于函数应该实际做的事情。作为回报,AWS lambda框架将确保根据当前需求扩展和减少执行函数的实际容器数。

实际上,如果要将readFileSync更改为异步变体,则必须调用相应的事件回调以确保AWS在等待文件异步结果时不会终止lambda。