SergeyO7 commited on
Commit
4a3fbe8
·
verified ·
1 Parent(s): 334d5e7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +6 -3
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 TokenBucket
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.consume(1)
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.consume(1)
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}