无服务器功能执行结束时运行清理功能?

时间:2017-10-27 09:29:53

标签: aws-lambda serverless-framework serverless

如果我在无服务器功能结束时没有关闭数据库连接,我的脚本将挂起并超时。

我希望有一种方法可以在任何无服务器功能结束时运行清理功能,这将关闭活动数据库连接等。

module.exports.create = (event, context, callback) => {
  user.insert({
    //user details
  }).then((results) => {
    responseHelper.success(JSON.stringify(results), callback);
  }, (error) => {
    // Connection error
    responseHelper.error(error, callback);
  });

  // I don't want to have this at the end of every function
  // I'd rather run it in a cleanup step which runs on all functions
  db.closeConnections();
}

1 个答案:

答案 0 :(得分:1)

首先,user.insert()返回一个Promise并在它仍然需要时关闭连接后立即调用db.closeConnections()。要实现您的目标,应在db.closeConnections()参数之前调用callback

在执行db.closeConnections();参数之前,您可以在帮助函数responseHelper.success()responseHelper.error()中调用callback。我想这些函数只写一次并由你所有的lambda处理程序共享。