如果我将此代码部署到Amazon Lambda ...
var settings = require('./settings');
var mysql = require('mysql');
var pool = mysql.createPool({
host: settings.host,
database: settings.database,
user: settings.user,
password: settings.password
});
module.exports.handler = function (request, context, callback) {
pool.getConnection(function (error, connection) {
if (error)
return callback(error);
connection.query('select 1', null, function (error, results) {
callback(null, results);
});
});
};
...端点以超时错误结束:
{
"errorMessage": "2017-07-20T10:04:26.629Z cc46e503-6d32-11e7-8fa9-9902efa96cc1 Task timed out after 6.00 seconds"
}
如果我添加 connection.destroy - 此代码成功完成:
...
connection.query('select 1', null, function (error, results) {
connection.destroy();
callback(null, results);
});
...
但我认为破坏联系不是一个好习惯。 如果我使用 connection.release()而不是 connection.destroy() - 这没有帮助,请像第一个示例一样挂起。
答案 0 :(得分:1)
解决方案是将 context.callbackWaitsForEmptyEventLoop = false; 添加到我的处理程序中:
module.exports.handler = function (request, context, callback) {
context.callbackWaitsForEmptyEventLoop = false;
....