mysql - Nodejs lambda函数超时
问题描述
只是尝试 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",
提前致谢。
解决方案
尝试callback
从您的处理程序中删除参数。你正在从你的函数中返回一个承诺,所以你不需要它。
定义callback
为参数可能会使 aws 认为您将在函数完成执行时调用它,而如果您不这样做,它会产生超时错误。
推荐阅读
- import - Python 导入 pdfplumber 错误“ModuleNotFoundError: No module named 'chardet'”
- java - 使用 Rest Assured 检查 JSON 数组的值的问题
- c# - 了解 .NET 基类库
- r - 将数据保存在文本文件中并在 R 中加载
- javascript - HTML中使用draggable时如何取动态数据的id值?
- python - PS4 控制器 - 值为 1 时光标不移动
- vue.js - GraphQL 查询 - 按 ID 查询
- bootstrap-4 - 如何使用 Bootstrap 4 创建只有某些部分折叠且某些部分仍出现在中小屏幕中的导航栏?
- java - 使用泛型的重载方法的莫名其妙的行为
- python - 如何在 matplotlib 中设置常量 figsize