Spaces:
Running
Running
Fix: use sync version of track_request to avoid SyntaxError
Browse filesCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- api/services.py +1 -1
- core/session_tracker.py +15 -12
api/services.py
CHANGED
|
@@ -188,7 +188,7 @@ class ClaudeProxyService:
|
|
| 188 |
)
|
| 189 |
|
| 190 |
session_id = self._get_session_id(request_data)
|
| 191 |
-
|
| 192 |
|
| 193 |
request_id = f"req_{uuid.uuid4().hex[:12]}"
|
| 194 |
logger.info(
|
|
|
|
| 188 |
)
|
| 189 |
|
| 190 |
session_id = self._get_session_id(request_data)
|
| 191 |
+
self._session_tracker.track_request_sync(session_id, resolved.provider_id)
|
| 192 |
|
| 193 |
request_id = f"req_{uuid.uuid4().hex[:12]}"
|
| 194 |
logger.info(
|
core/session_tracker.py
CHANGED
|
@@ -113,21 +113,24 @@ class SessionTracker:
|
|
| 113 |
|
| 114 |
async def track_request(self, session_id: str, provider_id: str) -> None:
|
| 115 |
"""Record a request for a session to a provider."""
|
| 116 |
-
|
| 117 |
-
self._cleanup_old_sessions()
|
| 118 |
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
self._sessions[session_id] = SessionState()
|
| 123 |
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 128 |
|
| 129 |
-
|
| 130 |
-
|
| 131 |
|
| 132 |
async def release_request(self, session_id: str, provider_id: str) -> None:
|
| 133 |
"""Release a request slot when streaming completes."""
|
|
|
|
| 113 |
|
| 114 |
async def track_request(self, session_id: str, provider_id: str) -> None:
|
| 115 |
"""Record a request for a session to a provider."""
|
| 116 |
+
self._track_request_sync(session_id, provider_id)
|
|
|
|
| 117 |
|
| 118 |
+
def track_request_sync(self, session_id: str, provider_id: str) -> None:
|
| 119 |
+
"""Record a request for a session to a provider (sync version)."""
|
| 120 |
+
self._cleanup_old_sessions()
|
|
|
|
| 121 |
|
| 122 |
+
if session_id not in self._sessions:
|
| 123 |
+
if len(self._sessions) >= self._max_sessions:
|
| 124 |
+
self._evict_lru_session()
|
| 125 |
+
self._sessions[session_id] = SessionState()
|
| 126 |
+
|
| 127 |
+
state = self._sessions[session_id]
|
| 128 |
+
state.requests_in_window += 1
|
| 129 |
+
state.last_request_time = time.monotonic()
|
| 130 |
+
state.total_requests += 1
|
| 131 |
|
| 132 |
+
self._session_requests[session_id][provider_id] += 1
|
| 133 |
+
self._provider_active[provider_id] += 1
|
| 134 |
|
| 135 |
async def release_request(self, session_id: str, provider_id: str) -> None:
|
| 136 |
"""Release a request slot when streaming completes."""
|