File size: 1,514 Bytes
92c4ae6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | import logging
from typing import Dict, Any
logger = logging.getLogger(__name__)
def execute_agent_background(task_data: Dict[str, Any]):
"""
Background worker function for executing an agent task.
This is called by the RQ worker.
"""
try:
from core.atom_meta_agent import AtomMetaAgent, AgentTriggerMode
request = task_data.get("request")
context = task_data.get("context", {})
trigger_mode_str = task_data.get("trigger_mode", "manual")
tenant_id = task_data.get("tenant_id", "default")
# Convert string trigger mode back to enum if needed
# (Assuming the caller passes the value string)
logger.info(f"Background worker: Executing agent for {tenant_id} - Request: {request[:50]}...")
# We need an event loop for the async execute method
import asyncio
atom = AtomMetaAgent(tenant_id)
# Create a new event loop for this thread if necessary
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
result = loop.run_until_complete(atom.execute(
request=request,
context=context,
trigger_mode=AgentTriggerMode(trigger_mode_str)
))
logger.info(f"Background worker: Execution completed for {tenant_id}")
return result
except Exception as e:
logger.error(f"Background agent execution failed: {e}", exc_info=True)
raise e
|