You've already forked FrameTour-RenderWorker
56 lines
1.8 KiB
Python
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
|