增加上传列表
This commit is contained in:
@@ -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 = APIRouter(prefix="/test", tags=["test"])
|
||||||
|
|
||||||
|
|
||||||
@router.get("/index")
|
@router.get("/index")
|
||||||
async def test():
|
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)}"}
|
||||||
@@ -1,25 +1,30 @@
|
|||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
import uuid
|
import uuid
|
||||||
|
import json
|
||||||
|
import uuid
|
||||||
from typing import Any, Optional, Dict
|
from typing import Any, Optional, Dict
|
||||||
from fastapi import APIRouter, Depends, HTTPException, status, Query
|
from fastapi import APIRouter, Depends, HTTPException, status, Query
|
||||||
|
from fastapi import APIRouter, Depends, HTTPException, status, Query
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
from sqlalchemy.ext.asyncio import AsyncSession
|
from sqlalchemy.ext.asyncio import AsyncSession
|
||||||
from sqlalchemy import select, func
|
from sqlalchemy import select, func
|
||||||
|
from sqlalchemy import select, func
|
||||||
|
|
||||||
from app.dependencies import get_current_user, get_db
|
from app.dependencies import get_current_user, get_db
|
||||||
from app.models.user import User
|
from app.models.user import User
|
||||||
from app.models.pre_test_template import PreTestTemplate
|
from app.models.pre_test_template import PreTestTemplate
|
||||||
from app.models.upload_task import UploadTask
|
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_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.services.upload_queue import upload_queue
|
||||||
from app.utils.douyinApi import DouyinApi
|
from app.utils.douyinApi import DouyinApi
|
||||||
from app.utils.id_gen import generate_id
|
from app.utils.id_gen import generate_id
|
||||||
|
|
||||||
|
|
||||||
router = APIRouter(prefix="/upload-material", tags=["上传素材"])
|
router = APIRouter(prefix="/upload-material", tags=["上传素材"])
|
||||||
|
|
||||||
|
|
||||||
class UploadTaskRequest(BaseModel):
|
class UploadTaskRequest(BaseModel):
|
||||||
advertiser_ids: list[str] = Field(..., description="广告主id数组,支持多条")
|
advertiser_ids: list[str] = Field(..., description="广告主id数组,支持多条")
|
||||||
resource_ids: list[str] = Field(..., description="资源id数组(generated_resources表主键)")
|
resource_ids: list[str] = Field(..., description="资源id数组(generated_resources表主键)")
|
||||||
@@ -30,6 +35,7 @@ class UploadTaskRequest(BaseModel):
|
|||||||
|
|
||||||
class BatchUploadRequest(BaseModel):
|
class BatchUploadRequest(BaseModel):
|
||||||
tasks: list[UploadTaskRequest] = Field(..., description="批量上传任务列表")
|
tasks: list[UploadTaskRequest] = Field(..., description="批量上传任务列表")
|
||||||
|
tasks: list[UploadTaskRequest] = Field(..., description="批量上传任务列表")
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
|
|||||||
@@ -68,6 +68,11 @@ async def lifespan(app: FastAPI):
|
|||||||
await upload_queue.recover()
|
await upload_queue.recover()
|
||||||
upload_queue_task = asyncio.create_task(upload_queue.run())
|
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秒后再同步,让系统完全启动
|
asyncio.create_task(asyncio.sleep(5)) # 等待5秒后再同步,让系统完全启动
|
||||||
async def startup_sync():
|
async def startup_sync():
|
||||||
@@ -94,6 +99,8 @@ async def lifespan(app: FastAPI):
|
|||||||
await upload_queue_task
|
await upload_queue_task
|
||||||
expiry_task.cancel()
|
expiry_task.cancel()
|
||||||
token_refresh_task.cancel()
|
token_refresh_task.cancel()
|
||||||
|
upload_queue.stop()
|
||||||
|
await upload_queue_task
|
||||||
await close_database()
|
await close_database()
|
||||||
await close_redis()
|
await close_redis()
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from sqlalchemy import String, Text, Integer
|
from sqlalchemy import String, Text, Integer
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
from sqlalchemy.orm import Mapped, mapped_column
|
||||||
|
|
||||||
from app.models.base import Base, TimestampMixin, SoftDeleteMixin
|
from app.models.base import Base, TimestampMixin, SoftDeleteMixin
|
||||||
@@ -26,5 +26,5 @@ class UploadTask(Base, TimestampMixin, SoftDeleteMixin):
|
|||||||
Text, nullable=True, comment="上传备注"
|
Text, nullable=True, comment="上传备注"
|
||||||
)
|
)
|
||||||
oauth_id: Mapped[str] = mapped_column(
|
oauth_id: Mapped[str] = mapped_column(
|
||||||
String(64), nullable=False, index=True,
|
String(64), nullable=False, index=True, comment="授权表id"
|
||||||
)
|
)
|
||||||
Reference in New Issue
Block a user