cesjavi commited on
Commit
b19d4ab
·
1 Parent(s): 9873daa

Fix: Worker polling set to 1h and heartbeat silenced to prevent DB bloating (Phase 9)

Browse files
Files changed (1) hide show
  1. backend/worker.py +9 -3
backend/worker.py CHANGED
@@ -7,6 +7,7 @@ import uuid
7
  from services.task_queue import TaskQueueService
8
  from services.supabase_service import supabase
9
  from services.agent_runner_service import AgentRunnerService
 
10
  from services.config import settings
11
 
12
  logging.basicConfig(level=logging.INFO)
@@ -87,6 +88,11 @@ class AubmWorker:
87
  logger.info("Task %s completed successfully.", task_id)
88
  else:
89
  raise RuntimeError(f"Assigned agent not found: {agent_id}")
 
 
 
 
 
90
  except Exception as e:
91
  logger.error("Failed to process task %s: %s", task_id, e)
92
  self.failed_count += 1
@@ -96,10 +102,10 @@ class AubmWorker:
96
  self.max_attempts,
97
  self.retry_delay_seconds,
98
  )
99
- await self.heartbeat("error")
100
  else:
101
- # No tasks, sleep for a bit (10s)
102
- await asyncio.sleep(10)
 
103
  finally:
104
  if heartbeat_task:
105
  heartbeat_task.cancel()
 
7
  from services.task_queue import TaskQueueService
8
  from services.supabase_service import supabase
9
  from services.agent_runner_service import AgentRunnerService
10
+ from services.budget_service import BudgetExceededError
11
  from services.config import settings
12
 
13
  logging.basicConfig(level=logging.INFO)
 
88
  logger.info("Task %s completed successfully.", task_id)
89
  else:
90
  raise RuntimeError(f"Assigned agent not found: {agent_id}")
91
+ except BudgetExceededError as e:
92
+ logger.warning("Budget blocked queued task %s: %s", task_id, e)
93
+ self.failed_count += 1
94
+ await TaskQueueService.mark_failed(task_id, str(e))
95
+ await self.heartbeat("error")
96
  except Exception as e:
97
  logger.error("Failed to process task %s: %s", task_id, e)
98
  self.failed_count += 1
 
102
  self.max_attempts,
103
  self.retry_delay_seconds,
104
  )
 
105
  else:
106
+ # No tasks, sleep for an hour as requested (3600s)
107
+ # This prevents filling the DB with poll/heartbeat logs
108
+ await asyncio.sleep(3600)
109
  finally:
110
  if heartbeat_task:
111
  heartbeat_task.cancel()