У меня есть сервер, работающий со следующим кодом. Я хочу, чтобы функция callAPI
вызывалась каждые две секунды, прощая часы между 2:00 утра 5:18 утра. API сообщает, что я делаю более 37,260 вызовов API в день (0,5 звонка/секунду * 60 секунд/минута * 60 минут/час * (24-3,3) часа). Любая причина, по которой эта функция будет запускать функцию callAPI чаще, чем 37 260 раз в день?Выполнять функцию каждые 2 секунды
function callAPI(callback) {
// Do API call
callback()
}
function timer() {
var d = new Date();
var hour = d.getHours();
if (hour == 2) {
setTimeout(function() {
callAPI(timer);
}, 1000 * 60 * 60 * 3.3); // Set timeout to 3.3 hours (resumes at 5:18)
} else {
setTimeout(function() {
callAPI(timer);
}, 2000); // 2 seconds
}
}
callAPI(timer)
Как он был запущен - может ли он быть отправлен несколько раз? – SmokeyPHP
Сколько API говорит, что вы используете? Вы должны использовать setInterval здесь вместо setTimeout. –
Сколько экземпляров вашего узла вы используете? вы должны убедиться, что вы используете только один экземпляр. Кроме того, я бы записывал каждый запрос в файл, используя библиотеку, например, winston https://github.com/winstonjs/winston, чтобы быть уверенным, почему и когда это происходит. – Charbz