【发布时间】:2018-06-22 17:21:04
【问题描述】:
我正在 AWS Lambda 上进行 POC。 Lambda 表现出意外行为。
Lambda 代码如下
var DB = require('../util/DB')
let response;
exports.lambda_handler = async (event, context, callback) => {
console.log("Starting");
try {
var connection = await DB.dbConnection();
connection.release();
response = {
'statusCode': 200,
'body': JSON.stringify({
message: 'hello world'
})
}
console.log(response)
callback(null, response)
}
catch (error) {
console.log(error)
callback(error, null)
}
console.log("Sending Response")
callback(null, response)
};
DB.js 是
var mysql = require('mysql');
let pool = mysql.createPool({
connectionLimit: 10,
host: host,
user: user,
password: password,
port: "3306",
database: database,
multipleStatements: true
});
pool.on('enqueue', function () {
console.error('runQry-Waiting for available connection callback');
});
function getConnection() {
return new Promise((resolve, reject)=> {
pool.getConnection(function(err, connection) {
if(err) {
console.log("\n\nerror")
reject(err)
} else {
console.log("\n\nresolve")
resolve(connection)
}
});
})
}
当我执行 lambda 时,它会在控制台中打印出“Starting”、“resolve”、“response”和“Sending Response”,然后等待超时。
我尝试注释掉“var connection..”和“connection..”。它工作得很好。
【问题讨论】:
标签: mysql node.js aws-lambda