Remove .env_example file and implement MetricsUpdater service for enhanced metrics tracking. Update bot.py to start and stop metrics updater, and improve database connection handling in CRUD operations with metrics tracking. Update README with details on metrics issues and fixes.

This commit is contained in:
2025-09-08 23:18:55 +03:00
parent 596a2fa813
commit 23c30a78e2
11 changed files with 744 additions and 49 deletions

View File

@@ -6,7 +6,7 @@ import time
from typing import Optional
from aiohttp import ClientSession, web
from aiohttp.web import Request, Response
from aiohttp.web import Request, Response, json_response
from loguru import logger
from config.constants import DEFAULT_HTTP_HOST, DEFAULT_HTTP_PORT, APP_VERSION, HTTP_STATUS_OK, HTTP_STATUS_SERVICE_UNAVAILABLE, HTTP_STATUS_INTERNAL_SERVER_ERROR
@@ -41,7 +41,8 @@ class HTTPServer:
try:
# Получаем метрики
metrics_data = self.metrics_service.get_metrics()
content_type = self.metrics_service.get_content_type()
if isinstance(metrics_data, bytes):
metrics_data = metrics_data.decode('utf-8')
# Записываем метрику HTTP запроса
duration = time.time() - start_time
@@ -50,7 +51,7 @@ class HTTPServer:
return Response(
text=metrics_data,
content_type=content_type,
content_type='text/plain; version=0.0.4',
status=HTTP_STATUS_OK
)
@@ -104,8 +105,8 @@ class HTTPServer:
self.metrics_service.record_http_request_duration("GET", "/health", duration)
self.metrics_service.increment_http_requests("GET", "/health", http_status)
return Response(
json=health_status,
return json_response(
health_status,
status=http_status
)
@@ -116,8 +117,8 @@ class HTTPServer:
self.metrics_service.increment_http_requests("GET", "/health", 500)
self.metrics_service.increment_errors(type(e).__name__, "health_handler")
return Response(
json={"status": "error", "message": str(e)},
return json_response(
{"status": "error", "message": str(e)},
status=HTTP_STATUS_INTERNAL_SERVER_ERROR
)
@@ -149,8 +150,8 @@ class HTTPServer:
self.metrics_service.record_http_request_duration("GET", "/ready", duration)
self.metrics_service.increment_http_requests("GET", "/ready", http_status)
return Response(
json=ready_status,
return json_response(
ready_status,
status=http_status
)
@@ -161,8 +162,8 @@ class HTTPServer:
self.metrics_service.increment_http_requests("GET", "/ready", 500)
self.metrics_service.increment_errors(type(e).__name__, "ready_handler")
return Response(
json={"status": "error", "message": str(e)},
return json_response(
{"status": "error", "message": str(e)},
status=HTTP_STATUS_INTERNAL_SERVER_ERROR
)
@@ -278,8 +279,8 @@ class HTTPServer:
self.metrics_service.record_http_request_duration("GET", "/", duration)
self.metrics_service.increment_http_requests("GET", "/", 200)
return Response(
json=info,
return json_response(
info,
status=HTTP_STATUS_OK
)
@@ -290,8 +291,8 @@ class HTTPServer:
self.metrics_service.increment_http_requests("GET", "/", 500)
self.metrics_service.increment_errors(type(e).__name__, "root_handler")
return Response(
json={"error": str(e)},
return json_response(
{"error": str(e)},
status=HTTP_STATUS_INTERNAL_SERVER_ERROR
)