Spaces:
Sleeping
Sleeping
rate limit chcek
Browse files- backend/main.py +25 -1
backend/main.py
CHANGED
|
@@ -187,7 +187,31 @@ def call_groq_with_backoff(client: Groq, messages: list) -> str:
|
|
| 187 |
if "413" in err or "too large" in err.lower() or "rate_limit_exceeded" in err.lower():
|
| 188 |
attempt += 1
|
| 189 |
if attempt >= len(word_limits):
|
| 190 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 191 |
new_limit = word_limits[attempt]
|
| 192 |
for msg in messages:
|
| 193 |
if msg["role"] == "user":
|
|
|
|
| 187 |
if "413" in err or "too large" in err.lower() or "rate_limit_exceeded" in err.lower():
|
| 188 |
attempt += 1
|
| 189 |
if attempt >= len(word_limits):
|
| 190 |
+
if "429" in err:
|
| 191 |
+
|
| 192 |
+
retry_after = None
|
| 193 |
+
|
| 194 |
+
try:
|
| 195 |
+
# Try to read headers if available
|
| 196 |
+
if hasattr(e, "response") and e.response:
|
| 197 |
+
|
| 198 |
+
headers = getattr(e.response, "headers", {})
|
| 199 |
+
|
| 200 |
+
retry_after = headers.get("retry-after")
|
| 201 |
+
|
| 202 |
+
except Exception:
|
| 203 |
+
pass
|
| 204 |
+
|
| 205 |
+
if retry_after:
|
| 206 |
+
raise ValueError(
|
| 207 |
+
f"Rate limit exceeded. Retry after {retry_after} seconds."
|
| 208 |
+
)
|
| 209 |
+
|
| 210 |
+
else:
|
| 211 |
+
raise ValueError(
|
| 212 |
+
"Rate limit exceeded. Retry later."
|
| 213 |
+
)
|
| 214 |
+
raise ValueError("Request too large even after maximum reductions.")
|
| 215 |
new_limit = word_limits[attempt]
|
| 216 |
for msg in messages:
|
| 217 |
if msg["role"] == "user":
|