【问题标题】:AWS Lambda: How to call Mysql Query in sequenceAWS Lambda:如何按顺序调用 Mysql Query
【发布时间】:2018-11-01 04:11:00
【问题描述】:

我想依次调用多个 sql 查询。 我已尝试使用以下代码,但出现超时错误:

    exports.handler = function (event, context, callback) {

   getNumber()
    .then(result1 => {
        // Use result1
        return getNumber1(); // (A)
    })
    .then(result2 => { // (B)
        console.log(result2);
        callback(null, "OK");
    })
    .catch(error => {
        console.log(error);
        callback(null, "OK");
    });
};

function getNumber() {

      return new Promise(function(resolve, reject) {

          connection.query("SELECT 1+1 as test ", (error, data) => {

            if (error) {
                reject(error);
            } else {
                resolve(data);
            }
            });
      }); 
    }

    function getNumber1() {

      return new Promise(function(resolve, reject) {

          connection.query("SELECT 1+2 as test ", (error, data) => {

            if (error) {
                reject(error);
            } else {
                resolve(data);
            }
            });
      }); 
    }

这里我收到“任务在 3.00 秒后超时”错误。 所以任何人都可以帮助我同步调用connection.query。

【问题讨论】:

  • 你能检查它是否适用于单个查询吗?
  • @Ashan,单查询,你的意思是调用 'getNumber().then(....).catch(....) ?
  • 是的。它有效吗?只想检查是否可以从 Lambda 访问数据库。
  • @Ashan,我通过为 lambda 函数执行日志添加图像来更新我的问题。请检查并给你建议。谢谢!

标签: node.js aws-lambda node-mysql


【解决方案1】:

这可以通过链接 AWS Lambda 函数来解决。 所以在这种情况下,每个函数都必须分成不同的 lambda 函数。然后链式调用它们。

不过,请记住,Lambda 函数有时间限制并且会退出。因此,如果 Lambda 运行时间更长,您可能需要不同的架构/AWS 组件来实现这一点。

Invoke multiple aws lambda functions

【讨论】:

    猜你喜欢
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 2019-07-20
    相关资源
    最近更新 更多