В некоторых моих маршрутах лямбда-функция отключается через 6 секунд, когда она использует существующее соединение mongodb.
Я уверен, что сама функция не является проблемой, поскольку я добавил много журналов, и это занимает 0,1 секунды, чтобы завершить sh, но лямбда не возвращает ничего более 6 секунд. В большинстве онлайн-уроков соединение с БД находится в той же папке, что и лямбда-функция, но я переместил его в собственный пакет, поскольку у меня более 5 конечных точек.
Это самая базовая c конечная точка, время от времени истекающая
module.exports.getAll = async (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;
try {
await databaseModels.db();
const x = await databaseModels.items.model.find({});
callback(null, {
statusCode: 200,
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(x)
})
} catch (error) {
callback(error, {
statusCode: 500,
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(error)
})
}
};
Это моя функция подключения к базе данных, которую я вызываю в начале каждой лямбда-функции
const url = ``
let isConnected;
module.exports = connectToDatabase = () => {
if (isConnected) {
console.log('=> using existing database connection');
return Promise.resolve();
}
console.log('=> using new database connection');
return mongoose.connect(url).then(db => {
isConnected = db.connections[0].readyState;
});
};
В одном из туриал я обнаружил, что автор открывает соединение для каждого запроса и закрывает его, когда вычисление было сделано. Это хорошая практика?