import json from opentelemetry.trace import Status, StatusCode from biz.ffmpeg import parse_ffmpeg_task, start_ffmpeg_task, clear_task_tmp_file, probe_video_info from telemetry import get_tracer from template import get_template_def from util import api def start_task(task_info): tracer = get_tracer(__name__) with tracer.start_as_current_span("start_task") as span: task_info = api.normalize_task(task_info) span.set_attribute("task", json.dumps(task_info)) template_info = get_template_def(task_info.get("templateId")) api.report_task_start(task_info) ffmpeg_task = parse_ffmpeg_task(task_info, template_info) result = start_ffmpeg_task(ffmpeg_task) if not result: span.set_status(Status(StatusCode.ERROR)) return api.report_task_failed(task_info) oss_result = api.upload_task_file(task_info, ffmpeg_task) if not oss_result: span.set_status(Status(StatusCode.ERROR)) return api.report_task_failed(task_info) # 获取视频长度宽度和时长 width, height, duration = probe_video_info(ffmpeg_task) clear_task_tmp_file(ffmpeg_task) api.report_task_success(task_info, videoInfo={ "width": width, "height": height, "duration": duration }) span.set_status(Status(StatusCode.OK))