import json import logging from opentelemetry.trace import Status, StatusCode # 使用新的服务架构 from services import DefaultTaskService, DefaultRenderService, DefaultTemplateService from telemetry import get_tracer logger = logging.getLogger(__name__) # 创建服务实例(单例模式) _render_service = None _template_service = None _task_service = None def _get_services(): """获取服务实例(懒加载)""" global _render_service, _template_service, _task_service if _render_service is None: _render_service = DefaultRenderService() if _template_service is None: _template_service = DefaultTemplateService() _template_service.load_local_templates() # 加载本地模板 if _task_service is None: _task_service = DefaultTaskService(_render_service, _template_service) return _task_service, _render_service, _template_service def start_task(task_info): """启动任务处理(保持向后兼容的接口)""" tracer = get_tracer(__name__) with tracer.start_as_current_span("start_task_legacy") as span: try: task_service, _, _ = _get_services() # 使用新的任务服务处理 result = task_service.process_task(task_info) if result: span.set_status(Status(StatusCode.OK)) logger.info("Task completed successfully: %s", task_info.get("id")) else: span.set_status(Status(StatusCode.ERROR)) logger.error("Task failed: %s", task_info.get("id")) return None # 保持原有返回值格式 except Exception as e: span.set_status(Status(StatusCode.ERROR)) logger.error("Task processing failed: %s", e, exc_info=True) return None