| 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") |
| |
| |
| |
| |
| logger.info(f"Background worker: Executing agent for {tenant_id} - Request: {request[:50]}...") |
| |
| |
| import asyncio |
| atom = AtomMetaAgent(tenant_id) |
| |
| |
| 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 |
|
|