Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 3 additions & 17 deletions rating_api/routes/base.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
from fastapi import FastAPI, Request, Response
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi_sqlalchemy import DBSessionMiddleware
from logger_middleware import LoggerMiddleware

from rating_api import __version__
from rating_api.routes.comment import comment
from rating_api.routes.lecturer import lecturer
from rating_api.settings import Settings, get_settings
from rating_api.utils.logging_utils import get_request_body, log_request


settings: Settings = get_settings()
Expand Down Expand Up @@ -37,18 +37,4 @@
app.include_router(lecturer)
app.include_router(comment)


@app.middleware("http")
async def add_process_time_header(request: Request, call_next):
"""Основной middleware, который логирует запрос и восстанавливает тело."""
try:
request, json_body = await get_request_body(request) # Получаем тело и восстанавливаем request
response: Response = await call_next(request)
status_code = response.status_code
except Exception:
status_code = 500
response = Response(content="Internal server error", status_code=500)
if __version__ != "dev": # Локально не отправляем логи в маркетинг
await log_request(request, status_code, json_body) # Логируем запрос

return response
app.add_middleware(LoggerMiddleware, service_id=settings.SERVICE_ID)
11 changes: 1 addition & 10 deletions rating_api/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,12 @@
from pydantic_settings import BaseSettings


LOGGING_MARKETING_URLS = {
"dev": f"http://localhost:{os.getenv('MARKETING_PORT', 8000)}/v1/action",
"test": "https://api.test.profcomff.com/marketing/v1/action",
"prod": "https://api.profcomff.com/marketing/v1/action",
}


class Settings(BaseSettings):
"""Application settings"""

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

'''Temp settings'''

Expand Down
83 changes: 0 additions & 83 deletions rating_api/utils/logging_utils.py

This file was deleted.

2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,5 @@ pydantic
pydantic-settings
SQLAlchemy
uvicorn
logger_middleware

Loading