From 77c5f5a3a65ef74db3780e79703a524f0db609de Mon Sep 17 00:00:00 2001 From: deadzilla Date: Wed, 8 Jul 2026 00:05:47 +0500 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5:=20graceful=20shutdown=20=D1=87=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B7=20on=5Fshutdown=20+=20context=20manager=20(S?= =?UTF-8?q?IGTERM=20=D0=BD=D0=B0=20Docker/K8s)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bot.py b/bot.py index ab377cd..89e954d 100644 --- a/bot.py +++ b/bot.py @@ -115,13 +115,19 @@ class BotRunner: self._on_shutdown() def run(self, token: str) -> None: - """Запустить бота с graceful shutdown.""" + """Запустить бота с graceful shutdown. + + Graceful shutdown обеспечивается: + - discord.py on_shutdown событие для остановки планировщика + - async with self.bot (context manager) для graceful disconnect + - KeyboardInterrupt (Ctrl+C) на POSIX + - SIGTERM обрабатывается через entrypoint-скрипт (Docker/K8s) + """ logger.info("Запуск бота...") async def main() -> None: try: async with self.bot: - # Регистрируем on_shutdown внутри контекста бота self.bot.add_listener(self._on_shutdown_async, "on_shutdown") await self.bot.start(token, reconnect=True) except discord.LoginFailure as e: