Spaces:
Running
Running
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}
|