import json import logging from fastapi import APIRouter, BackgroundTasks, HTTPException from app.schemas.pose_transform import PoseTransformModel from app.schemas.response_template import ResponseModel from app.service.generate_image.service_pose_transform import PoseTransformService, infer_cancel as pose_transform_infer_cancel router = APIRouter() logger = logging.getLogger() @router.post("/pose_transform") def pose_transform(request_item: PoseTransformModel, background_tasks: BackgroundTasks): """ 创建一个具有以下参数的请求体: - **tasks_id**: 任务id 用于取消生成任务和获取生成结果 - **image_url**: 被生成图片的S3或minio url地址 - **pose_id**: 1 示例参数: { "tasks_id": "123-89", "image_url": "aida-results/result_0000b606-1902-11ef-9424-0242ac180002.png", "pose_id": "1", "result_type" : "gif" } """ try: logger.info(f"pose_transform request item is : @@@@@@:{json.dumps(request_item.dict())}") service = PoseTransformService(request_item) background_tasks.add_task(service.get_result) except Exception as e: logger.warning(f"pose_transform Run Exception @@@@@@:{e}") raise HTTPException(status_code=404, detail=str(e)) return ResponseModel() @router.get("/pose_transform_cancel/{tasks_id}") def pose_transform_cancel(tasks_id: str): try: logger.info(f"pose_transform_cancel request item is : @@@@@@:{tasks_id}") data = pose_transform_infer_cancel(tasks_id) logger.info(f"pose_transform_cancel response @@@@@@:{data}") except Exception as e: logger.warning(f"pose_transform_cancel Run Exception @@@@@@:{e}") raise HTTPException(status_code=404, detail=str(e)) return ResponseModel(data=data['data'])