Refactor metrics handling and improve logging
- Removed the MetricsManager initialization from `run_helper.py` to avoid duplication, as metrics are now handled in `main.py`. - Updated logging levels in `server_prometheus.py` and `metrics_middleware.py` to use debug instead of info for less critical messages. - Added metrics configuration to `BaseDependencyFactory` for better management of metrics settings. - Deleted the obsolete `metrics_exporter.py` file to streamline the codebase. - Updated various tests to reflect changes in the metrics handling and ensure proper functionality.
This commit is contained in:
@@ -33,10 +33,8 @@ async def main():
|
||||
auto_unban_scheduler.set_bot(auto_unban_bot)
|
||||
auto_unban_scheduler.start_scheduler()
|
||||
|
||||
# Инициализируем метрики ПОСЛЕ импорта всех модулей
|
||||
# Это гарантирует, что global instance полностью инициализирован
|
||||
from helper_bot.utils.metrics_exporter import MetricsManager
|
||||
metrics_manager = MetricsManager(host="0.0.0.0", port=8000)
|
||||
# Метрики запускаются в main.py через server_prometheus.py
|
||||
# Здесь не нужно дублировать функциональность
|
||||
|
||||
# Флаг для корректного завершения
|
||||
shutdown_event = asyncio.Event()
|
||||
@@ -50,9 +48,8 @@ async def main():
|
||||
signal.signal(signal.SIGINT, signal_handler)
|
||||
signal.signal(signal.SIGTERM, signal_handler)
|
||||
|
||||
# Запускаем бота и метрики
|
||||
# Запускаем бота (метрики запускаются внутри start_bot)
|
||||
bot_task = asyncio.create_task(start_bot(bdf))
|
||||
metrics_task = asyncio.create_task(metrics_manager.start())
|
||||
|
||||
main_bot = None
|
||||
|
||||
@@ -67,21 +64,16 @@ async def main():
|
||||
logger.info("Останавливаем планировщик автоматического разбана...")
|
||||
auto_unban_scheduler.stop_scheduler()
|
||||
|
||||
logger.info("Останавливаем метрики...")
|
||||
try:
|
||||
await metrics_manager.stop()
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка при остановке метрик: {e}")
|
||||
# Метрики останавливаются в main.py
|
||||
|
||||
logger.info("Останавливаем задачи...")
|
||||
# Отменяем задачи
|
||||
# Отменяем задачу бота
|
||||
bot_task.cancel()
|
||||
metrics_task.cancel()
|
||||
|
||||
# Ждем завершения задач и получаем результат main bot
|
||||
# Ждем завершения задачи бота и получаем результат main bot
|
||||
try:
|
||||
results = await asyncio.gather(bot_task, metrics_task, return_exceptions=True)
|
||||
# Первый результат - это main bot
|
||||
results = await asyncio.gather(bot_task, return_exceptions=True)
|
||||
# Результат - это main bot
|
||||
if results[0] and not isinstance(results[0], Exception):
|
||||
main_bot = results[0]
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user