Rthur2003 commited on
Commit
b65bdc6
·
1 Parent(s): 413c3b6

feat: data processing remix ve analysis backend routes ile rate limiting ve istemci IP servisleri eklendi

Browse files
Files changed (2) hide show
  1. app/routes/analyze.py +1 -14
  2. app/routes/dreams.py +2 -1
app/routes/analyze.py CHANGED
@@ -90,6 +90,7 @@ from ..services.inference_xai import get_xai_service
90
  from ..services.meta_classifier import MetaClassifierService, MODEL_VERSION_TRAINED
91
  from ..services.url_parser import parse_youtube_url
92
  from ..services.youtube_downloader import YouTubeDownloadError, YouTubeDownloader
 
93
  from ..services.logging_config import get_logger
94
 
95
  router = APIRouter()
@@ -119,20 +120,6 @@ _ANALYZE_RATE_MAX = 20 # requests per minute per IP
119
  _ANALYZE_MAX_IPS = 10_000
120
 
121
 
122
- def _client_ip(request: Request) -> str:
123
- """The visitor's address behind the Hugging Face proxy.
124
-
125
- uvicorn sees the proxy, so request.client alone would put every
126
- visitor in one bucket; the proxy lists the original client first
127
- in X-Forwarded-For.
128
- """
129
- forwarded = request.headers.get("x-forwarded-for", "")
130
- first = forwarded.split(",")[0].strip()
131
- if first:
132
- return first
133
- return request.client.host if request.client else "unknown"
134
-
135
-
136
  async def _analyze_rate_limit(request: Request) -> None:
137
  """Rate limit for analysis endpoints."""
138
  client_ip = _client_ip(request)
 
90
  from ..services.meta_classifier import MetaClassifierService, MODEL_VERSION_TRAINED
91
  from ..services.url_parser import parse_youtube_url
92
  from ..services.youtube_downloader import YouTubeDownloadError, YouTubeDownloader
93
+ from ..services.client_ip import client_ip as _client_ip
94
  from ..services.logging_config import get_logger
95
 
96
  router = APIRouter()
 
120
  _ANALYZE_MAX_IPS = 10_000
121
 
122
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  async def _analyze_rate_limit(request: Request) -> None:
124
  """Rate limit for analysis endpoints."""
125
  client_ip = _client_ip(request)
app/routes/dreams.py CHANGED
@@ -11,6 +11,7 @@ from fastapi import APIRouter, Depends, HTTPException, Request, status
11
 
12
  from app.schemas import DreamAnalysisRequest, DreamAnalysisResponse
13
  from app.services.dream_analyzer import analyze_dream
 
14
  from app.services.logging_config import get_logger
15
 
16
  router = APIRouter(prefix="/api/dreams", tags=["Dreams"])
@@ -26,7 +27,7 @@ _MAX_TRACKED_IPS = 10_000
26
 
27
 
28
  async def _rate_limit(request: Request) -> None:
29
- client_ip = request.client.host if request.client else "unknown"
30
  now = time.time()
31
  cutoff = now - _RATE_WINDOW
32
 
 
11
 
12
  from app.schemas import DreamAnalysisRequest, DreamAnalysisResponse
13
  from app.services.dream_analyzer import analyze_dream
14
+ from app.services.client_ip import client_ip as _client_ip
15
  from app.services.logging_config import get_logger
16
 
17
  router = APIRouter(prefix="/api/dreams", tags=["Dreams"])
 
27
 
28
 
29
  async def _rate_limit(request: Request) -> None:
30
+ client_ip = _client_ip(request)
31
  now = time.time()
32
  cutoff = now - _RATE_WINDOW
33