10
10
11
11
from app .config import config
12
12
from app .controllers import base
13
+ from app .controllers .manager .memory_manager import InMemoryTaskManager
14
+ from app .controllers .manager .redis_manager import RedisTaskManager
13
15
from app .controllers .v1 .base import new_router
14
16
from app .models .exception import HttpException
15
17
from app .models .schema import TaskVideoRequest , TaskQueryResponse , TaskResponse , TaskQueryRequest , \
22
24
# router = new_router(dependencies=[Depends(base.verify_token)])
23
25
router = new_router ()
24
26
27
+ _enable_redis = config .app .get ("enable_redis" , False )
28
+ _redis_host = config .app .get ("redis_host" , "localhost" )
29
+ _redis_port = config .app .get ("redis_port" , 6379 )
30
+ _redis_db = config .app .get ("redis_db" , 0 )
31
+ _redis_password = config .app .get ("redis_password" , None )
32
+ _max_concurrent_tasks = config .app .get ("max_concurrent_tasks" , 5 )
33
+
34
+ redis_url = f"redis://:{ _redis_password } @{ _redis_host } :{ _redis_port } /{ _redis_db } "
35
+ # 根据配置选择合适的任务管理器
36
+ if _enable_redis :
37
+ task_manager = RedisTaskManager (max_concurrent_tasks = _max_concurrent_tasks , redis_url = redis_url )
38
+ else :
39
+ task_manager = InMemoryTaskManager (max_concurrent_tasks = _max_concurrent_tasks )
40
+
41
+ # @router.post("/videos-test", response_model=TaskResponse, summary="Generate a short video")
42
+ # async def create_video_test(request: Request, body: TaskVideoRequest):
43
+ # task_id = utils.get_uuid()
44
+ # request_id = base.get_task_id(request)
45
+ # try:
46
+ # task = {
47
+ # "task_id": task_id,
48
+ # "request_id": request_id,
49
+ # "params": body.dict(),
50
+ # }
51
+ # task_manager.add_task(tm.start_test, task_id=task_id, params=body)
52
+ # return utils.get_response(200, task)
53
+ # except ValueError as e:
54
+ # raise HttpException(task_id=task_id, status_code=400, message=f"{request_id}: {str(e)}")
55
+
25
56
26
57
@router .post ("/videos" , response_model = TaskResponse , summary = "Generate a short video" )
27
58
def create_video (background_tasks : BackgroundTasks , request : Request , body : TaskVideoRequest ):
@@ -34,7 +65,8 @@ def create_video(background_tasks: BackgroundTasks, request: Request, body: Task
34
65
"params" : body .dict (),
35
66
}
36
67
sm .state .update_task (task_id )
37
- background_tasks .add_task (tm .start , task_id = task_id , params = body )
68
+ # background_tasks.add_task(tm.start, task_id=task_id, params=body)
69
+ task_manager .add_task (tm .start , task_id = task_id , params = body )
38
70
logger .success (f"video created: { utils .to_json (task )} " )
39
71
return utils .get_response (200 , task )
40
72
except ValueError as e :
0 commit comments