Закрытие 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?

0 ответов

Другие вопросы по тегам