Закрытие MySQL Connection в Node.JS в Alexa Skill, размещенном на AWS
У меня есть навык Alexa, написанный на Node.JS (на основе Amazon Quick Start), и в рамках этого навыка я подключаюсь к базе данных MySQL, размещенной на Azure. Проблема заключается в том, что если я использую этот навык более 10 раз, я достигаю максимального предела числа подключений, разрешенного Azure для моей учетной записи, и это умение не будет выполнено. Я использую модуль MySQL.
Вот код моего навыка:
< !--language: lang - js-- >
function getAnswer(intent, session, callback) {
const cardTitle = intent.name;
const keyWord = intent.slots.KeyWord;
const shouldEndSession = false;
let repromptText = '';
let sessionAttributes = {};
let speechOutput = '';
const mysql = require('mysql');
const con = mysql.createConnection({
host: 'host',
database: 'database',
user: 'user',
password: 'pw'
});
con.connect(err => {
if (err) throw err;
console.log('connected to mysql database after');
});
setTimeout(function () {
con.destroy(err => {
if (err) throw err;
console.log('closed connection to mysql database');
});
}, 1000);
con.query('SELECT something FROM database WHERE id != 0;', function (err, result, fields) {
if (err) throw err;
let answer = result;
speechOutput = `The answer is ${result}.`;
repromptText = 'Ask me what the answer is.';
callback(sessionAttributes,
buildSpeechletResponse(cardTitle, speechOutput, repromptText, shouldEndSession));
});
}
Вещи, которые я пытался:
- connection.end () и connection.destroy () (см. код)
- Увеличение времени ожидания в лямбда-консоли для навыка
- используя createPool вместо creatConnection
Без метода con.destroy () умение не вернет результат. Тем не менее, это на самом деле не разрушает открытые связи.
В журналах видно, что код выполняется нормально, но Alexa не отвечает сгенерированным ответом.
В лямбда-консоли я попытался установить время ожидания в одну минуту для выполнения навыка, но речи по-прежнему нет.
У меня была похожая проблема с соединениями с базой данных Firebase Realtime, но в этом случае я смог надежно закрыть соединение.
Может быть, у кого-то есть опыт в этом сценарии с Alexa Skill, включая проблемы с закрытием соединений MySQL?