Я создал бот-диск, используя Node.js и фреймворк discord.js-commando
.
Одной из функций является создание сценариев для записи, что по сути является таймером, поэтому вы можете сказать: Я хочу писать в течение 20 минут, начиная с 5 минут . Затем бот будет ждать 5 минут и запускать спринт, затем через 20 минут он уведомляет пользователей, делающих это, о том, что он завершен, и ожидает поступления словесных счетчиков, а затем публикует результаты.
Это работало нормально, когда бот был только на одном сервере, но было добавлено к нескольким совсем недавно (78 по команде !stats
, хотя я не знаю, сколько активно его использует), и так как тогда это было очень странно.
Иногда спринт никогда не начинается, иногда он никогда не заканчивается, иногда он заканчивается, а затем после того, как вы публикуете свои WordCounts, он никогда не публикует окончательные результаты.
Это мой первый опыт работы с Node.js, так что я не знаю, делаю ли я что-то не так. Я делаю все таймеры с функцией setTimeout
.
Вот командный файл: ссылка на GitHub
Например, это тайм-аут, который устанавливается после того, как пользователь отправил свою учетную запись, если теперь все отправили свою учетную запись, поэтому мы можем отобразить результаты:
msg.say('The word counts are in. Results coming up shortly...');
this.finished = 1;
// Clear original timeout
this.clear();
// Set new one
this.messageTimeout = setTimeout(function() {
obj.finish(msg);
}, 10000);
Где clear
:
clear() {
clearTimeout(this.messageTimeout);
}
Есть ли что-то не так с этим? Я очень мало знаю о Node.js ... Должен ли я смотреть на cron
каждую минуту вместо обработки спринтов? Или это может быть проблема с сервером? Я запускаю его на бесплатном сервере EC2 AWS, но все отчеты выглядят нормально, ресурсы на ненормально высоких уровнях не используются.
Спасибо.