Skip to content

Commit f20f88a

Browse files
authored
Merge pull request #120 from profcomff/fixup_middleware
Refactor logger_middleware
2 parents 3c31668 + e99ea2e commit f20f88a

4 files changed

Lines changed: 6 additions & 110 deletions

File tree

rating_api/routes/base.py

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
from fastapi import FastAPI, Request, Response
1+
from fastapi import FastAPI
22
from fastapi.middleware.cors import CORSMiddleware
33
from fastapi_sqlalchemy import DBSessionMiddleware
4+
from logger_middleware import LoggerMiddleware
45

56
from rating_api import __version__
67
from rating_api.routes.comment import comment
78
from rating_api.routes.lecturer import lecturer
89
from rating_api.settings import Settings, get_settings
9-
from rating_api.utils.logging_utils import get_request_body, log_request
1010

1111

1212
settings: Settings = get_settings()
@@ -37,18 +37,4 @@
3737
app.include_router(lecturer)
3838
app.include_router(comment)
3939

40-
41-
@app.middleware("http")
42-
async def add_process_time_header(request: Request, call_next):
43-
"""Основной middleware, который логирует запрос и восстанавливает тело."""
44-
try:
45-
request, json_body = await get_request_body(request) # Получаем тело и восстанавливаем request
46-
response: Response = await call_next(request)
47-
status_code = response.status_code
48-
except Exception:
49-
status_code = 500
50-
response = Response(content="Internal server error", status_code=500)
51-
if __version__ != "dev": # Локально не отправляем логи в маркетинг
52-
await log_request(request, status_code, json_body) # Логируем запрос
53-
54-
return response
40+
app.add_middleware(LoggerMiddleware, service_id=settings.SERVICE_ID)

rating_api/settings.py

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,12 @@
55
from pydantic_settings import BaseSettings
66

77

8-
LOGGING_MARKETING_URLS = {
9-
"dev": f"http://localhost:{os.getenv('MARKETING_PORT', 8000)}/v1/action",
10-
"test": "https://api.test.profcomff.com/marketing/v1/action",
11-
"prod": "https://api.profcomff.com/marketing/v1/action",
12-
}
13-
14-
158
class Settings(BaseSettings):
169
"""Application settings"""
1710

1811
DB_DSN: PostgresDsn = 'postgresql://postgres@localhost:5432/postgres'
1912
ROOT_PATH: str = '/' + os.getenv("APP_NAME", "")
13+
SERVICE_ID: int = os.getenv("SERVICE_ID", -3) # Указать какой id сервиса
2014
COMMENT_FREQUENCY_IN_MONTH: int = 10
2115
COMMENT_LECTURER_FREQUENCE_IN_MONTH: int = 6
2216
COMMENT_LIMIT: int = 20
@@ -27,9 +21,6 @@ class Settings(BaseSettings):
2721
CORS_ALLOW_METHODS: list[str] = ['*']
2822
CORS_ALLOW_HEADERS: list[str] = ['*']
2923
MAX_COMMENT_LENGTH: int = 3000
30-
LOGGING_MARKETING_URL: str = LOGGING_MARKETING_URLS.get(
31-
os.getenv("APP_ENV", "dev"), LOGGING_MARKETING_URLS["test"]
32-
)
3324

3425
'''Temp settings'''
3526

rating_api/utils/logging_utils.py

Lines changed: 0 additions & 83 deletions
This file was deleted.

requirements.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,5 @@ pydantic
1010
pydantic-settings
1111
SQLAlchemy
1212
uvicorn
13+
logger_middleware
14+

0 commit comments

Comments
 (0)