Я вызываю метод, который обновляет некоторые данные в модели Postgres, используя Sequelize.Вызов осуществляется из функции асинхронного генератора следующим образом:
Структура папки:
- folder1
- initialCallFile (функция генератора)
- anotherFileThatCalls (функция без генератора)
- folder2
Первоначальный вызов:
async function* function() {
await storage.updateBot({id: player.id, handsPlayed: 1, isActive: true});
}
Метод updateBot:
function updateBot(data) {
return new Promise(async resolve => {
try {
const bot = await Bot.findOne({
where: {
id: data.id,
},
});
if (bot) {
if (data.handsPlayed)
bot.handsPlayed += data.handsPlayed;
if (data.handsWon)
bot.handsWon += data.handsWon;
if (data.totalWinnings)
bot.totalWinnings = data.totalWinnings;
if (data.isActive !== null && data.isActive !== undefined)
bot.isActive = data.isActive;
} else {
logger.log('debug', 'No Bot found with id: %s', data.id);
resolve(true);
}
await bot.save();
resolve(true);
} catch (err) {
logger.log('error', 'Error updating Bot with id: %s', data.id);
resolve(true);
}
});
}
Метод updateBot зависает при начальном запросе Bot.fineOne.Не выдается никаких ошибок, и даже через 5-10 минут нет таймаута.
Я также вызываю updateBot из других мест, которые не находятся внутри функции генератора и работают как положено, не зависая.Однако я не думаю, что это функция генератора, вызывающая проблемы, поскольку для одной это совершенно отдельная функция, и когда я заменяю запрос простым тайм-аутом, он не зависает.
Я также пытался вызватьобновить непосредственно в функции генератора, и все еще есть зависание.Так как нет ошибок или тайм-аута, я не уверен, как лучше отладить проблему.Код работает как задумано, когда вызывается в другом месте, так что я весьма озадачен.
Любые предложения будут с благодарностью.