|
6 | 6 | from .agent_registry import AgentRegistry
|
7 | 7 | from typing import Dict, Any, Optional
|
8 | 8 | from .config import Config
|
| 9 | +from .logging_config import setup_logger |
9 | 10 | import uuid
|
10 | 11 |
|
11 | 12 | class AgentServer:
|
12 | 13 | def __init__(self, config: Optional[Config] = None):
|
13 |
| - self.app = FastAPI() |
| 14 | + self.logger = setup_logger("agentserve.server") |
| 15 | + self.app = FastAPI(debug=True) |
14 | 16 | self.agent_registry = AgentRegistry()
|
15 | 17 | self.config = config or Config()
|
16 | 18 | self.task_queue = self._initialize_task_queue()
|
17 | 19 | self.agent = self.agent_registry.register_agent
|
18 | 20 | self._setup_routes()
|
| 21 | + self.logger.info("AgentServer initialized") |
19 | 22 |
|
20 | 23 | def _initialize_task_queue(self):
|
21 | 24 | task_queue_type = self.config.get('task_queue', 'local').lower()
|
22 |
| - if task_queue_type == 'celery': |
23 |
| - from .celery_task_queue import CeleryTaskQueue |
24 |
| - return CeleryTaskQueue(self.config) |
25 |
| - elif task_queue_type == 'redis': |
26 |
| - from .redis_task_queue import RedisTaskQueue |
27 |
| - return RedisTaskQueue(self.config) |
28 |
| - else: |
29 |
| - from .queues.local_task_queue import LocalTaskQueue |
30 |
| - return LocalTaskQueue() |
| 25 | + self.logger.info(f"Initializing {task_queue_type} task queue") |
| 26 | + |
| 27 | + try: |
| 28 | + if task_queue_type == 'celery': |
| 29 | + from .queues.celery_task_queue import CeleryTaskQueue |
| 30 | + return CeleryTaskQueue(self.config) |
| 31 | + elif task_queue_type == 'redis': |
| 32 | + from .queues.redis_task_queue import RedisTaskQueue |
| 33 | + return RedisTaskQueue(self.config) |
| 34 | + else: |
| 35 | + from .queues.local_task_queue import LocalTaskQueue |
| 36 | + return LocalTaskQueue() |
| 37 | + except Exception as e: |
| 38 | + self.logger.error(f"Failed to initialize task queue: {str(e)}") |
| 39 | + raise |
31 | 40 |
|
32 | 41 | def _setup_routes(self):
|
33 | 42 | @self.app.post("/task/sync")
|
34 | 43 | async def sync_task(task_data: Dict[str, Any]):
|
| 44 | + self.logger.debug(f"sync_task called with data: {task_data}") |
35 | 45 | try:
|
36 | 46 | agent_function = self.agent_registry.get_agent()
|
37 |
| - result = agent_function(task_data) |
| 47 | + if getattr(agent_function, '_is_async', False): |
| 48 | + self.logger.info("Function is async, running in event loop") |
| 49 | + result = await agent_function(task_data) |
| 50 | + else: |
| 51 | + self.logger.info("Function is sync, running directly") |
| 52 | + result = agent_function(task_data) |
38 | 53 | return {"result": result}
|
39 | 54 | except ValidationError as ve:
|
40 | 55 | if hasattr(ve, 'errors'):
|
|
0 commit comments