From 70f2261d68f546273c7b1ab48790bbb9fa291b65 Mon Sep 17 00:00:00 2001 From: wwwwwwwww <526125649@qq.com> Date: Thu, 6 Aug 2026 16:44:28 +0800 Subject: [PATCH] 1 --- CODEBASE.md | 7 ++++--- DEPLOYMENT.md | 11 ++++++----- video-gen-api/app/enums/celery_queue.py | 1 + video-gen-api/app/tasks/api_generation_tasks.py | 13 ++++++++----- video-gen-api/app/tasks/api_upscale_tasks.py | 4 ++-- video-gen-api/docker-compose.yml | 2 +- 6 files changed, 22 insertions(+), 16 deletions(-) diff --git a/CODEBASE.md b/CODEBASE.md index 729dff96..f9b2549a 100644 --- a/CODEBASE.md +++ b/CODEBASE.md @@ -398,7 +398,8 @@ async def _cleanup_urls(): # 实际逻辑写在 async 函数 | `gen_shot_split` | 拆镜切片 | 1-2 | | `gen_api_create` | API v3 视频任务创建 | 2-4 | | `gen_api_poll` | API v3 视频状态轮询 | 2-4 | -| `gen_api_download` | API v3 视频下载与超分 | 2-4 | +| `gen_api_download` | API v3 视频下载 | 2-4 | +| `gen_api_upscale` | API v3 超分 | 2-4 | | `default` | 默认队列(用户 OAuth、清理任务等) | 1-2 | #### 完整启动命令 @@ -406,7 +407,7 @@ async def _cleanup_urls(): # 实际逻辑写在 async 函数 ```bash # ── 单机部署(所有队列一个 Worker)── celery -A app.tasks.celery_app worker -l info \ - -Q gen_chatapi_create,gen_provider_poll,gen_result_download,gen_video_upscale_local,gen_video_upscale_remote,gen_recovery,gen_private_portrait,gen_shot_analysis,gen_shot_split,gen_api_create,gen_api_poll,gen_api_download,default \ + -Q gen_chatapi_create,gen_provider_poll,gen_result_download,gen_video_upscale_local,gen_video_upscale_remote,gen_recovery,gen_private_portrait,gen_shot_analysis,gen_shot_split,gen_api_create,gen_api_poll,gen_api_download,gen_api_upscale,default \ --concurrency=4 # ── 生产环境(按功能分离 Worker)── @@ -418,7 +419,7 @@ celery -A app.tasks.celery_app worker -l info \ # 超分 Worker celery -A app.tasks.celery_app worker -l info \ - -Q gen_video_upscale_local,gen_video_upscale_remote \ + -Q gen_video_upscale_local,gen_video_upscale_remote,gen_api_upscale \ --concurrency=2 -n worker_upscale@%h # 恢复 Worker diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index cee52d63..443d5440 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -251,7 +251,8 @@ Celery 使用 **12 个队列**,按功能分离: | `gen_shot_split` | 拆镜切片 | | `gen_api_create` | **API v3 视频任务创建** | | `gen_api_poll` | **API v3 视频状态轮询** | -| `gen_api_download` | **API v3 视频下载与超分** | +| `gen_api_download` | **API v3 视频下载** | +| `gen_api_upscale` | **API v3 超分处理(本地/远程)** | | `default` | 默认队列(用户 OAuth、清理任务等) | #### 启动命令 @@ -259,7 +260,7 @@ Celery 使用 **12 个队列**,按功能分离: ```bash # ── 启动 Worker(消费所有队列,单机部署)── celery -A app.tasks.celery_app worker -l info \ - -Q gen_chatapi_create,gen_provider_poll,gen_result_download,gen_video_upscale_local,gen_video_upscale_remote,gen_recovery,gen_private_portrait,gen_shot_analysis,gen_shot_split,gen_api_create,gen_api_poll,gen_api_download,default \ + -Q gen_chatapi_create,gen_provider_poll,gen_result_download,gen_video_upscale_local,gen_video_upscale_remote,gen_recovery,gen_private_portrait,gen_shot_analysis,gen_shot_split,gen_api_create,gen_api_poll,gen_api_download,gen_api_upscale,default \ --concurrency=4 # ── 按功能分离 Worker(生产环境推荐)── @@ -270,9 +271,9 @@ celery -A app.tasks.celery_app worker -l info \ --concurrency=4 \ -n worker_busy@%h -# 超分 Worker:处理本地和远程超分 +# 超分 Worker:处理本地和远程超分(含 API v3 超分) celery -A app.tasks.celery_app worker -l info \ - -Q gen_video_upscale_local,gen_video_upscale_remote \ + -Q gen_video_upscale_local,gen_video_upscale_remote,gen_api_upscale \ --concurrency=2 \ -n worker_upscale@%h @@ -326,7 +327,7 @@ Type=simple User=www-data WorkingDirectory=/opt/video-gen-api Environment=PATH=/opt/video-gen-api/.venv/bin -ExecStart=/opt/video-gen-api/.venv/bin/celery -A app.tasks.celery_app worker -l info -Q gen_video_upscale_local,gen_video_upscale_remote --concurrency=2 -n worker_upscale@%h +ExecStart=/opt/video-gen-api/.venv/bin/celery -A app.tasks.celery_app worker -l info -Q gen_video_upscale_local,gen_video_upscale_remote,gen_api_upscale --concurrency=2 -n worker_upscale@%h Restart=always RestartSec=5 diff --git a/video-gen-api/app/enums/celery_queue.py b/video-gen-api/app/enums/celery_queue.py index a6f04ace..61fc7dbe 100644 --- a/video-gen-api/app/enums/celery_queue.py +++ b/video-gen-api/app/enums/celery_queue.py @@ -11,6 +11,7 @@ class CeleryQueue(str, Enum): GEN_PRIVATE_PORTRAIT = "gen_private_portrait" GEN_SHOT_ANALYSIS = "gen_shot_analysis" GEN_SHOT_SPLIT = "gen_shot_split" + GEN_API_UPSCALE = "gen_api_upscale" DEFAULT = "default" diff --git a/video-gen-api/app/tasks/api_generation_tasks.py b/video-gen-api/app/tasks/api_generation_tasks.py index 1c924f70..f0afc025 100644 --- a/video-gen-api/app/tasks/api_generation_tasks.py +++ b/video-gen-api/app/tasks/api_generation_tasks.py @@ -532,9 +532,9 @@ async def _download_generation_result(self, task_id: str) -> dict[str, Any]: from app.services.video_upscale.media_service import probe_video source_info = await probe_video(abs_path) if source_info: - task.source_width = source_info.width - task.source_height = source_info.height - task.source_duration_seconds = round(source_info.duration_seconds, 2) + source_width = source_info.width + source_height = source_info.height + source_duration = round(source_info.duration_seconds, 2) except Exception as exc: logger.warning("Failed to probe video info: %s", exc) @@ -546,6 +546,9 @@ async def _download_generation_result(self, task_id: str) -> dict[str, Any]: db=db, api_task=task, source_local_path=dest_path, + source_width=source_width, + source_height=source_height, + source_duration=source_duration, ) # 如果已存在超分任务(重复调用),检查超分状态 @@ -585,13 +588,13 @@ async def _download_generation_result(self, task_id: str) -> dict[str, Any]: if processor_key in ("local_ffmpeg_crop_v1",): api_upscale_execute_local_simple.apply_async( args=[upscale_task.id], - queue="gen_api_upscale", + queue=CeleryQueue.GEN_API_UPSCALE.value, ) else: # 远程超分(火山 MediaKit) api_upscale_submit_remote_simple.apply_async( args=[upscale_task.id], - queue="gen_api_upscale", + queue=CeleryQueue.GEN_API_UPSCALE.value, ) await db.commit() diff --git a/video-gen-api/app/tasks/api_upscale_tasks.py b/video-gen-api/app/tasks/api_upscale_tasks.py index fbc81c77..5cf7dca9 100644 --- a/video-gen-api/app/tasks/api_upscale_tasks.py +++ b/video-gen-api/app/tasks/api_upscale_tasks.py @@ -224,7 +224,7 @@ def api_upscale_submit_remote_simple(self, upscale_task_id: str) -> dict[str, An api_upscale_poll_remote_simple.apply_async( args=[upscale_task_id], countdown=30, - queue="gen_api_upscale", + queue=CeleryQueue.GEN_API_UPSCALE.value, ) return {"status": "submitted", "provider_task_id": submit_result.task_id} @@ -350,7 +350,7 @@ def api_upscale_poll_remote_simple(self, upscale_task_id: str) -> dict[str, Any] api_upscale_poll_remote_simple.apply_async( args=[upscale_task_id], countdown=30, - queue="gen_api_upscale", + queue=CeleryQueue.GEN_API_UPSCALE.value, ) return {"status": "polling"} diff --git a/video-gen-api/docker-compose.yml b/video-gen-api/docker-compose.yml index 32ab10ac..9ba6d32d 100644 --- a/video-gen-api/docker-compose.yml +++ b/video-gen-api/docker-compose.yml @@ -37,7 +37,7 @@ services: worker: build: . - command: celery -A app.tasks.celery_app worker -l info + command: celery -A app.tasks.celery_app worker -l info -Q default,gen_chatapi_create,gen_provider_poll,gen_result_download,gen_recovery,gen_video_upscale_local,gen_video_upscale_remote,gen_private_portrait,gen_shot_analysis,gen_shot_split,gen_api_upscale volumes: - .:/app env_file: