Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -15,7 +15,7 @@ import aiohttp
|
|
| 15 |
import asyncio
|
| 16 |
import json
|
| 17 |
from agent import MagAgent
|
| 18 |
-
from token_bucket import
|
| 19 |
|
| 20 |
# (Keep Constants as is)
|
| 21 |
# --- Constants ---
|
|
@@ -26,6 +26,9 @@ RATE_LIMIT = 15 # Requests per minute
|
|
| 26 |
TOKEN_BUCKET_CAPACITY = RATE_LIMIT
|
| 27 |
TOKEN_BUCKET_REFILL_RATE = RATE_LIMIT / 60.0 # Tokens per second
|
| 28 |
|
|
|
|
|
|
|
|
|
|
| 29 |
async def fetch_questions(session: aiohttp.ClientSession, questions_url: str) -> list:
|
| 30 |
"""Fetch questions asynchronously."""
|
| 31 |
try:
|
|
@@ -66,7 +69,7 @@ async def process_question(agent, question_text: str, task_id: str, results_log:
|
|
| 66 |
"""Process a single question with global rate limiting."""
|
| 67 |
try:
|
| 68 |
# Wait for a token before proceeding
|
| 69 |
-
await token_bucket.
|
| 70 |
submitted_answer = await agent(question_text)
|
| 71 |
results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": submitted_answer})
|
| 72 |
return {"task_id": task_id, "submitted_answer": submitted_answer}
|
|
@@ -74,7 +77,7 @@ async def process_question(agent, question_text: str, task_id: str, results_log:
|
|
| 74 |
if e.status == 429:
|
| 75 |
print(f"Rate limit hit for task {task_id}. Retrying after delay...")
|
| 76 |
await asyncio.sleep(60 / RATE_LIMIT) # Wait before retry
|
| 77 |
-
await token_bucket.
|
| 78 |
submitted_answer = await agent(question_text)
|
| 79 |
results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": submitted_answer})
|
| 80 |
return {"task_id": task_id, "submitted_answer": submitted_answer}
|
|
|
|
| 15 |
import asyncio
|
| 16 |
import json
|
| 17 |
from agent import MagAgent
|
| 18 |
+
from token_bucket import Limiter
|
| 19 |
|
| 20 |
# (Keep Constants as is)
|
| 21 |
# --- Constants ---
|
|
|
|
| 26 |
TOKEN_BUCKET_CAPACITY = RATE_LIMIT
|
| 27 |
TOKEN_BUCKET_REFILL_RATE = RATE_LIMIT / 60.0 # Tokens per second
|
| 28 |
|
| 29 |
+
# Initialize global token bucket
|
| 30 |
+
token_bucket = Limiter(rate=TOKEN_BUCKET_REFILL_RATE, capacity=TOKEN_BUCKET_CAPACITY)
|
| 31 |
+
|
| 32 |
async def fetch_questions(session: aiohttp.ClientSession, questions_url: str) -> list:
|
| 33 |
"""Fetch questions asynchronously."""
|
| 34 |
try:
|
|
|
|
| 69 |
"""Process a single question with global rate limiting."""
|
| 70 |
try:
|
| 71 |
# Wait for a token before proceeding
|
| 72 |
+
await token_bucket.wait(1)
|
| 73 |
submitted_answer = await agent(question_text)
|
| 74 |
results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": submitted_answer})
|
| 75 |
return {"task_id": task_id, "submitted_answer": submitted_answer}
|
|
|
|
| 77 |
if e.status == 429:
|
| 78 |
print(f"Rate limit hit for task {task_id}. Retrying after delay...")
|
| 79 |
await asyncio.sleep(60 / RATE_LIMIT) # Wait before retry
|
| 80 |
+
await token_bucket.wait(1)
|
| 81 |
submitted_answer = await agent(question_text)
|
| 82 |
results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": submitted_answer})
|
| 83 |
return {"task_id": task_id, "submitted_answer": submitted_answer}
|