fix: добавлено закрытие requests.Session при graceful shutdown бота
This commit is contained in:
parent
1fa6deaf67
commit
c5c6a51cd2
6
bot.py
6
bot.py
@ -175,10 +175,14 @@ class BotRunner:
|
|||||||
pass # Бот не может писать в канал — игнорируем
|
pass # Бот не может писать в канал — игнорируем
|
||||||
|
|
||||||
def _on_shutdown(self) -> None:
|
def _on_shutdown(self) -> None:
|
||||||
"""Остановить планировщик при завершении работы бота."""
|
"""Остановить планировщик и закрыть сетевые сессии."""
|
||||||
if self.scheduler:
|
if self.scheduler:
|
||||||
self.scheduler.stop()
|
self.scheduler.stop()
|
||||||
logger.info("Планировщик остановлен")
|
logger.info("Планировщик остановлен")
|
||||||
|
from utils import close_all_sessions
|
||||||
|
|
||||||
|
close_all_sessions()
|
||||||
|
logger.info("Сетевые сессии закрыты")
|
||||||
|
|
||||||
async def _on_shutdown_async(self) -> None:
|
async def _on_shutdown_async(self) -> None:
|
||||||
"""Асинхронный хук завершения (discord.py on_shutdown)."""
|
"""Асинхронный хук завершения (discord.py on_shutdown)."""
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
from .pogoda import (
|
from .pogoda import (
|
||||||
API_URL_WEATHER,
|
API_URL_WEATHER,
|
||||||
|
_session as _weather_session,
|
||||||
fetch_weather,
|
fetch_weather,
|
||||||
fetch_open_meteo,
|
fetch_open_meteo,
|
||||||
format_weather_data_for_console,
|
format_weather_data_for_console,
|
||||||
@ -8,14 +9,18 @@ from .pogoda import (
|
|||||||
translate_weather,
|
translate_weather,
|
||||||
wmo_to_russian,
|
wmo_to_russian,
|
||||||
)
|
)
|
||||||
from .news import (
|
from .news import ( # noqa: E402
|
||||||
|
_session as _news_session,
|
||||||
RSS_URL_ARTICLES,
|
RSS_URL_ARTICLES,
|
||||||
RSS_URL_POSTS,
|
RSS_URL_POSTS,
|
||||||
fetch_rss,
|
fetch_rss,
|
||||||
format_articles,
|
format_articles,
|
||||||
truncate_title,
|
truncate_title,
|
||||||
)
|
)
|
||||||
from .cat import fetch_cat
|
from .cat import ( # noqa: E402
|
||||||
|
_session as _cat_session,
|
||||||
|
fetch_cat,
|
||||||
|
)
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
# Погода
|
# Погода
|
||||||
@ -35,4 +40,20 @@ __all__ = [
|
|||||||
"truncate_title",
|
"truncate_title",
|
||||||
# Котики
|
# Котики
|
||||||
"fetch_cat",
|
"fetch_cat",
|
||||||
|
# Lifecycle
|
||||||
|
"close_all_sessions",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def close_all_sessions() -> None:
|
||||||
|
"""Закрыть все requests.Session для освобождения сокетов."""
|
||||||
|
for session in (
|
||||||
|
_weather_session,
|
||||||
|
_news_session,
|
||||||
|
_cat_session,
|
||||||
|
):
|
||||||
|
try:
|
||||||
|
session.close()
|
||||||
|
except Exception:
|
||||||
|
pass # Cleanup — игнорируем ошибки
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user