【问题标题】:Nodejs lambda function timing outNodejs lambda函数超时
【发布时间】:2019-09-15 22:38:33
【问题描述】:

只是尝试 Lambda 和 nodejs。 我有一个超时错误,每隔几次就会发生一次。

我的nodejs代码如下。

var mysql = require('mysql');

var pool = mysql.createPool({
  connectionLimit: 100,
  host     : 'hostname',
  user     : 'username',
  password : 'password',
  database : 'database',
  port : 3306
});


exports.handler = async (event, context, callback) => {
    let request = JSON.parse(event.body);
    let sId = request.sid;
    let questionnaireId = request.questionnaireId;

    pool.getConnection((error, connection) => {
        if (error) throw error;
        let sql = "INSERT INTO answers (qId, sId,) VALUES(" + questionnaireId + ", " + sid + ")";
        connection.query(sql, function(err, result){
            if(err) throw err;
            console.log("Successfull Insert")
            connection.release();
        });

    });

    const response = {
        statusCode: 200,
        headers: {
                    'Access-Control-Allow-Origin': '*',
                    'Access-Control-Allow-Credentials': true
                },
        body: JSON.stringify({message : 'success'}),
    };

    return response;
};

Cloudwatch 显示以下消息。

"errorMessage": "连接 ETIMEDOUT", "code": "ETIMEDOUT",

提前致谢。

【问题讨论】:

    标签: mysql node.js aws-lambda


    【解决方案1】:

    尝试从您的处理程序中删除 callback 参数。你正在从你的函数中返回一个承诺,所以你不需要它。

    callback 定义为参数可能会使aws 认为您将在函数完成执行时调用它,而如果您不这样做,它会产生超时错误。

    【讨论】:

      【解决方案2】:

      替换

      return response;
      

      用这个:

      callback(null, response)
      

      参考:https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html

      【讨论】:

        猜你喜欢
        • 2020-10-05
        • 2017-07-22
        • 1970-01-01
        • 2019-04-15
        • 2021-10-17
        • 2019-06-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多