diff --git a/video-gen-api/app/api/v1/test.py b/video-gen-api/app/api/v1/test.py index 02961f89..7a38e1d9 100644 --- a/video-gen-api/app/api/v1/test.py +++ b/video-gen-api/app/api/v1/test.py @@ -1,10 +1,24 @@ -from fastapi import APIRouter, Depends, HTTPException, Request - +from fastapi import APIRouter, HTTPException +import asyncio +from redis.asyncio import Redis +from app.config import settings +from app.utils.redis import get_redis router = APIRouter(prefix="/test", tags=["test"]) @router.get("/index") async def test(): - return {"message": "test","code":200} - + redis = None + try: + redis = get_redis() + await redis.set("test", "123", ex=60) + value = await redis.get("test") + return {"message": "redis测试成功", "value": value} + except Exception as e: + if redis: + try: + await redis.close() + except: + pass + return {"message": f"redis测试失败: {str(e)}"} \ No newline at end of file diff --git a/video-gen-api/app/api/v1/upload_material.py b/video-gen-api/app/api/v1/upload_material.py index ae618a28..509eb757 100644 --- a/video-gen-api/app/api/v1/upload_material.py +++ b/video-gen-api/app/api/v1/upload_material.py @@ -1,25 +1,30 @@ import os import json import uuid +import json +import uuid from typing import Any, Optional, Dict from fastapi import APIRouter, Depends, HTTPException, status, Query +from fastapi import APIRouter, Depends, HTTPException, status, Query from pydantic import BaseModel, Field from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import select, func +from sqlalchemy import select, func from app.dependencies import get_current_user, get_db from app.models.user import User from app.models.pre_test_template import PreTestTemplate from app.models.upload_task import UploadTask +from app.models.upload_task import UploadTask from app.services.upload_material_service import upload_material_to_platform from app.services.upload_queue import upload_queue +from app.services.upload_queue import upload_queue from app.utils.douyinApi import DouyinApi from app.utils.id_gen import generate_id router = APIRouter(prefix="/upload-material", tags=["上传素材"]) - class UploadTaskRequest(BaseModel): advertiser_ids: list[str] = Field(..., description="广告主id数组,支持多条") resource_ids: list[str] = Field(..., description="资源id数组(generated_resources表主键)") @@ -30,6 +35,7 @@ class UploadTaskRequest(BaseModel): class BatchUploadRequest(BaseModel): tasks: list[UploadTaskRequest] = Field(..., description="批量上传任务列表") + tasks: list[UploadTaskRequest] = Field(..., description="批量上传任务列表") @router.post( diff --git a/video-gen-api/app/main.py b/video-gen-api/app/main.py index 98964409..9fd46e74 100644 --- a/video-gen-api/app/main.py +++ b/video-gen-api/app/main.py @@ -68,6 +68,11 @@ async def lifespan(app: FastAPI): await upload_queue.recover() upload_queue_task = asyncio.create_task(upload_queue.run()) + # 启动上传队列(异步处理素材上传) + from app.services.upload_queue import upload_queue + await upload_queue.recover() + upload_queue_task = asyncio.create_task(upload_queue.run()) + # 启动时立即同步一次未支付订单 asyncio.create_task(asyncio.sleep(5)) # 等待5秒后再同步,让系统完全启动 async def startup_sync(): @@ -94,6 +99,8 @@ async def lifespan(app: FastAPI): await upload_queue_task expiry_task.cancel() token_refresh_task.cancel() + upload_queue.stop() + await upload_queue_task await close_database() await close_redis() diff --git a/video-gen-api/app/models/upload_task.py b/video-gen-api/app/models/upload_task.py index 6d50154d..e109cdff 100644 --- a/video-gen-api/app/models/upload_task.py +++ b/video-gen-api/app/models/upload_task.py @@ -1,4 +1,4 @@ -from sqlalchemy import String, Text, Integer +from sqlalchemy import String, Text, Integer from sqlalchemy.orm import Mapped, mapped_column from app.models.base import Base, TimestampMixin, SoftDeleteMixin @@ -26,5 +26,5 @@ class UploadTask(Base, TimestampMixin, SoftDeleteMixin): Text, nullable=True, comment="上传备注" ) oauth_id: Mapped[str] = mapped_column( - String(64), nullable=False, index=True, + String(64), nullable=False, index=True, comment="授权表id" ) \ No newline at end of file