From d1c64a5a2b73b4e99bdbcd44db00915001395f72 Mon Sep 17 00:00:00 2001 From: deadzilla Date: Tue, 7 Jul 2026 22:19:04 +0500 Subject: [PATCH] =?UTF-8?q?feat:=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B2=D1=80?= =?UTF-8?q?=D0=B5=D0=BC=D0=B5=D0=BD=D0=B8=20=D0=BE=D0=B6=D0=B8=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=B2=20=D0=B4=D0=BD=D0=B8/=D1=87=D0=B0?= =?UTF-8?q?=D1=81=D1=8B/=D0=BC=D0=B8=D0=BD=D1=83=D1=82=D1=8B/=D1=81=D0=B5?= =?UTF-8?q?=D0=BA=D1=83=D0=BD=D0=B4=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/morning_runner.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/utils/morning_runner.py b/utils/morning_runner.py index f590b6d..b0ff353 100644 --- a/utils/morning_runner.py +++ b/utils/morning_runner.py @@ -156,6 +156,24 @@ class Scheduler: self._running = False logger.info("Планировщик остановлен") + @staticmethod + def _format_duration(seconds: float) -> str: + """Форматирует секунды в читаемый вид: '1 дн, 8 ч, 57 мин, 50 сек'.""" + days, remainder = divmod(seconds, 86400) + hours, remainder = divmod(remainder, 3600) + minutes, secs = divmod(remainder, 60) + + parts = [] + if days: + parts.append(f"{int(days)} дн") + if hours: + parts.append(f"{int(hours)} ч") + if minutes: + parts.append(f"{int(minutes)} мин") + parts.append(f"{int(secs)} сек") + + return ", ".join(parts) + def _calculate_next_run(self, now: datetime) -> datetime: """Рассчитать время следующего запуска.""" hour, minute = map(int, self.morning_time.split(":")) @@ -173,10 +191,9 @@ class Scheduler: sleep_seconds = (target - now).total_seconds() logger.info( - "Ожидание: target=%s, sleep=%.0f сек (%.0f мин)", + "Ожидание: target=%s, sleep=%s", target.strftime("%Y-%m-%d %H:%M"), - sleep_seconds, - sleep_seconds / 60, + self._format_duration(sleep_seconds), ) # Спим до целевого времени