Files
FrameTour-RenderWorker/biz/task.py
2025-09-12 14:41:58 +08:00

56 lines
1.8 KiB
Python

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