diff --git a/get_data_new.py b/get_data_new.py index ee6465c..d10c50e 100644 --- a/get_data_new.py +++ b/get_data_new.py @@ -1603,65 +1603,49 @@ def main(): parser.add_argument("--lang", default="en") args = parser.parse_args() - # бесконечный дневной цикл while True: - # на каждый цикл — новая сессия и новый stop_event session = create_session() stop_event = threading.Event() try: - # один полный прогон логики дня: - # - обновить сезоны/календарь - # - если есть матч и он лайв -> отследить до финала - # - записать статику для последней игры, если она уже завершилась get_data_API(session, args.league, args.team, args.lang, stop_event) except KeyboardInterrupt: - # оператор сказал "хватит" - logger.info("KeyboardInterrupt -> останавливаемся сразу") + logger.info("KeyboardInterrupt -> остановка по запросу оператора") stop_event.set() break except Exception as e: - # не падаем навсегда от любой ошибки, просто логируем - logger.exception(f"main-loop crash: {e}") - - # сюда мы попадаем всегда, даже если: - # - сегодня не было матча - # - матч был, но ещё не начался - # - матч уже давно закончился - # - матч только что отследили в онлайне до свистка + logger.exception(f"main loop crash: {e}") + # Спим до 00:05 следующего дня now = datetime.now(APP_TZ) - - # время следующего старта: завтра в 00:05 по APP_TZ (Europe/Moscow в коде) tomorrow = (now + timedelta(days=1)).replace( hour=0, minute=5, second=0, microsecond=0 ) - - # если вдруг сейчас уже >00:05 (например мы запустились в 00:10), - # то завтра уже будет +1 день от текущей даты, но нам это и нужно. sleep_seconds = (tomorrow - now).total_seconds() if sleep_seconds < 0: - # это теоретический случай, если .replace() попал в прошлое; - # подстрахуемся: спать до 00:05 следующего дня +1 tomorrow = (now + timedelta(days=2)).replace( hour=0, minute=5, second=0, microsecond=0 ) sleep_seconds = (tomorrow - now).total_seconds() logger.info( - f"Работа за день завершена. Спим до {tomorrow.strftime('%d.%m %H:%M')} " + f"Работа завершена. Засыпаем до {tomorrow.strftime('%d.%m %H:%M')} " f"(~{round(sleep_seconds/3600, 2)} ч)." ) - # мягкий сон. если во время сна дадут Ctrl+C — просто выходим. try: time.sleep(sleep_seconds) except KeyboardInterrupt: logger.info("KeyboardInterrupt во время сна -> выходим.") break - # после пробуждения while True просто идёт на новую итерацию - # и запускает новую сессию / новый stop_event / новый get_data_API + # и снова в бой — новый день + stop_event = threading.Event() + session = create_session() + + +if __name__ == "__main__": + main()