From f8a4c59cd0f55890bcadae0f1c6cda1005179334 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Mon, 13 Jul 2026 14:35:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B8=B2=E6=9F=93=E5=BC=95=E6=93=8Eflag?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E5=A2=9E=E5=8A=A0=E8=B0=83=E8=AF=95=E6=97=A5?= =?UTF-8?q?=E5=BF=97=20+=20=E7=BB=9F=E4=B8=80fallback=E8=A1=8C=E4=B8=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 三个入口(compose_video/edit_plan/generate_video)都增加flag配置详情日志 (enabled/percentage/whitelist/default_engine),灰度期间便于排查 - 统一fallback行为:异常时全部fallback到legacy(保守策略) 之前generate_video异常时fallback到unified,与其他入口不一致 --- apps/worker/worker_app/tasks/compose_video.py | 23 +++++++++++++++---- .../worker_app/tasks/edit_plan_generation.py | 16 +++++++++++-- apps/worker/worker_app/tasks/generation.py | 19 ++++++++++++--- 3 files changed, 49 insertions(+), 9 deletions(-) diff --git a/apps/worker/worker_app/tasks/compose_video.py b/apps/worker/worker_app/tasks/compose_video.py index 4509d5e02..854afcd0b 100755 --- a/apps/worker/worker_app/tasks/compose_video.py +++ b/apps/worker/worker_app/tasks/compose_video.py @@ -59,15 +59,30 @@ def compose_video(self, job_id: str, **kwargs): # 判断使用哪个渲染引擎 # 优先级:Redis Feature Flag(白名单 > 百分比) > 环境变量默认 from video_processing.render_engine_resolver import get_render_engine_resolver + from video_processing.render_metrics import render_task_metrics resolver = get_render_engine_resolver() user_id = job.created_by_user_id or None engine = resolver.get_engine(user_id=user_id) + # 灰度期间打印详细 flag 配置,便于排查 + config = resolver.get_config_snapshot() + logger.info( + "compose_video 引擎选择: job_id=%s engine=%s user_id=%s enabled=%s percentage=%s whitelist=%d default=%s", + job_id, + engine, + user_id, + config.get("enabled"), + config.get("percentage"), + len(config.get("whitelist", [])), + config.get("default_engine"), + ) - if engine == "unified": - return _compose_with_unified_engine(self, job_service, job, plan_id, db) - else: - return _compose_with_legacy_engine(self, job_service, job, plan_id, db) + # 灰度观测指标埋点 + with render_task_metrics(engine=engine, task_type="compose_video"): + if engine == "unified": + return _compose_with_unified_engine(self, job_service, job, plan_id, db) + else: + return _compose_with_legacy_engine(self, job_service, job, plan_id, db) except self.retry_exc as exc: logger.warning("视频合成重试中: job_id=%s, exc=%s", job_id, exc) diff --git a/apps/worker/worker_app/tasks/edit_plan_generation.py b/apps/worker/worker_app/tasks/edit_plan_generation.py index 9b422ab57..cfef30096 100755 --- a/apps/worker/worker_app/tasks/edit_plan_generation.py +++ b/apps/worker/worker_app/tasks/edit_plan_generation.py @@ -77,9 +77,21 @@ def _resolve_render_engine(user_id: str) -> str: from video_processing.render_engine_resolver import get_render_engine_resolver resolver = get_render_engine_resolver() - return resolver.get_engine(user_id=user_id) + engine = resolver.get_engine(user_id=user_id) + # 灰度期间打印详细 flag 配置,便于排查 + config = resolver.get_config_snapshot() + logger.info( + "edit_plan 引擎选择: user_id=%s engine=%s enabled=%s percentage=%s whitelist=%d default=%s", + user_id, + engine, + config.get("enabled"), + config.get("percentage"), + len(config.get("whitelist", [])), + config.get("default_engine"), + ) + return engine except Exception as exc: - logger.warning("获取渲染引擎配置失败,fallback 到 legacy: %s", exc) + logger.warning("获取渲染引擎配置失败,fallback 到 legacy: %s", exc, exc_info=True) return "legacy" diff --git a/apps/worker/worker_app/tasks/generation.py b/apps/worker/worker_app/tasks/generation.py index 6af97259a..9d475c463 100755 --- a/apps/worker/worker_app/tasks/generation.py +++ b/apps/worker/worker_app/tasks/generation.py @@ -787,10 +787,23 @@ def _resolve_render_engine(user_id: str) -> str: from video_processing.render_engine_resolver import get_render_engine_resolver resolver = get_render_engine_resolver() - return resolver.get_engine(user_id=user_id) + engine = resolver.get_engine(user_id=user_id) + # 灰度期间打印详细 flag 配置,便于排查 + config = resolver.get_config_snapshot() + logger.info( + "[渲染引擎] flag 解析: user_id=%s engine=%s enabled=%s percentage=%s whitelist=%d default=%s", + user_id, + engine, + config.get("enabled"), + config.get("percentage"), + len(config.get("whitelist", [])), + config.get("default_engine"), + ) + return engine except Exception as exc: - logger.warning("获取渲染引擎配置失败,fallback 到 unified: %s", exc) - return ENGINE_UNIFIED + # 异常时 fallback 到 legacy(保守策略,与 edit_plan_generation 一致) + logger.warning("获取渲染引擎配置失败,fallback 到 legacy: %s", exc, exc_info=True) + return ENGINE_LEGACY # ── 旧引擎渲染(FFmpeg filter_complex) ────────────────────────────────────────