feat : 代码梳理 移除所有敏感密钥 通过环境变量方式配置
All checks were successful
git commit AiDA python develop 分支构建部署 / scheduled_deploy (push) Has been skipped
All checks were successful
git commit AiDA python develop 分支构建部署 / scheduled_deploy (push) Has been skipped
This commit is contained in:
@@ -12,7 +12,8 @@ from PIL import Image
|
||||
from minio import Minio, S3Error
|
||||
from moviepy.video.io.VideoFileClip import VideoFileClip
|
||||
|
||||
from app.core.config import MINIO_URL, MINIO_ACCESS, MINIO_SECRET, MINIO_SECURE, COMFYUI_SERVER_ADDRESS, PS_RABBITMQ_QUEUES, DEBUG
|
||||
from app.core.config import PS_RABBITMQ_QUEUES
|
||||
from app.core.config import settings
|
||||
from app.schemas.comfyui_i2v import ComfyuiFLF2VModel
|
||||
from app.service.generate_image.utils.mq import publish_status
|
||||
|
||||
@@ -305,13 +306,14 @@ workflow_json = {
|
||||
|
||||
class ComfyUIServerFLF2V:
|
||||
def __init__(self, request_data):
|
||||
self.pose_transform_data = None
|
||||
self.start_image_url = request_data.start_image_url
|
||||
self.end_image_url = request_data.end_image_url
|
||||
self.prompt = request_data.prompt
|
||||
self.tasks_id = request_data.tasks_id
|
||||
self.user_id = self.tasks_id[self.tasks_id.rfind('-') + 1:]
|
||||
self.server_status_data = {'tasks_id': self.tasks_id, 'status': 'PENDING', 'message': "pending", 'gif_url': '', 'video_url': '', 'image_url': ''}
|
||||
self.minio_client = Minio(MINIO_URL, access_key=MINIO_ACCESS, secret_key=MINIO_SECRET, secure=MINIO_SECURE)
|
||||
self.minio_client = Minio(settings.MINIO_URL, access_key=settings.MINIO_ACCESS, secret_key=settings.MINIO_SECRET, secure=settings.MINIO_SECURE)
|
||||
|
||||
def get_result(self):
|
||||
workflow_json['6']['inputs']['text'] = self.prompt
|
||||
@@ -341,7 +343,7 @@ class ComfyUIServerFLF2V:
|
||||
# 1. 提交任务
|
||||
prompt_response = self.queue_prompt(workflow_json, self.tasks_id)
|
||||
if not prompt_response:
|
||||
return
|
||||
return None
|
||||
|
||||
prompt_id = prompt_response.get("prompt_id")
|
||||
logger.info(f" 任务已提交,Prompt ID: {prompt_id}")
|
||||
@@ -361,6 +363,7 @@ class ComfyUIServerFLF2V:
|
||||
}
|
||||
logger.info(file_list)
|
||||
return self.process_and_upload_comfyui_video(filename=file_list['filename'], subfolder=file_list['subfolder'], prompt_id=prompt_response['prompt_id']), prompt_id
|
||||
return None
|
||||
|
||||
def download_from_minio_in_memory(self, image_url):
|
||||
bucket = image_url.split('/')[0]
|
||||
@@ -391,8 +394,9 @@ class ComfyUIServerFLF2V:
|
||||
logger.error(f"❌ MinIO 下载过程中发生未知错误: {e}")
|
||||
return None, None
|
||||
|
||||
def upload_in_memory_file_to_comfyui(self, in_memory_file, filename):
|
||||
upload_url = f"http://{COMFYUI_SERVER_ADDRESS}/upload/image"
|
||||
@staticmethod
|
||||
def upload_in_memory_file_to_comfyui(in_memory_file, filename):
|
||||
upload_url = f"http://{settings.COMFYUI_SERVER_ADDRESS}/upload/image"
|
||||
|
||||
data = {
|
||||
"overwrite": "true",
|
||||
@@ -430,7 +434,7 @@ class ComfyUIServerFLF2V:
|
||||
# 1. 从 ComfyUI 获取视频二进制数据
|
||||
mp4_bytes = self.get_comfyui_video_bytes(filename, subfolder)
|
||||
if not mp4_bytes:
|
||||
return
|
||||
return None
|
||||
|
||||
# 2. 准备进行视频处理
|
||||
# moviepy 不支持直接使用 bytes,需要将 bytes 写入一个 BytesIO 或临时文件
|
||||
@@ -518,7 +522,7 @@ class ComfyUIServerFLF2V:
|
||||
self.pose_transform_data = {'tasks_id': self.tasks_id, 'status': 'SUCCESS', 'message': "success", 'gif_url': f'aida-users/{GIF_OBJECT}', 'video_url': f'aida-users/{MP4_OBJECT}', 'image_url': f'aida-users/{FRAME_OBJECT}'}
|
||||
|
||||
# 推送消息
|
||||
if not DEBUG:
|
||||
if not settings.DEBUG:
|
||||
publish_status(json.dumps(self.pose_transform_data), PS_RABBITMQ_QUEUES)
|
||||
logger.info(
|
||||
f" [x] Sent to: {PS_RABBITMQ_QUEUES} data:@@@@ {json.dumps(self.pose_transform_data, indent=4)}")
|
||||
@@ -530,13 +534,14 @@ class ComfyUIServerFLF2V:
|
||||
return None
|
||||
|
||||
# --- 辅助函数:提交任务到队列 ---
|
||||
def queue_prompt(self, prompt, client_id):
|
||||
@staticmethod
|
||||
def queue_prompt(prompt, client_id):
|
||||
"""向 ComfyUI 提交工作流提示。"""
|
||||
p = {"prompt": prompt, "client_id": client_id, "prompt_id": client_id}
|
||||
data = json.dumps(p).encode('utf-8')
|
||||
|
||||
# 提交任务到 /prompt 端点
|
||||
response = requests.post(f"http://{COMFYUI_SERVER_ADDRESS}/prompt", data=data)
|
||||
response = requests.post(f"http://{settings.COMFYUI_SERVER_ADDRESS}/prompt", data=data)
|
||||
# print(f"-------------{response.text}")
|
||||
# print(f"------------{client_id}")
|
||||
|
||||
@@ -547,9 +552,10 @@ class ComfyUIServerFLF2V:
|
||||
logger.warning(response.text)
|
||||
return None
|
||||
|
||||
def poll_history(self, prompt_id, interval_seconds=5):
|
||||
@staticmethod
|
||||
def poll_history(prompt_id, interval_seconds=5):
|
||||
"""步骤 2: 轮询 /history/{prompt_id} 检查任务是否完成"""
|
||||
url = f"http://{COMFYUI_SERVER_ADDRESS}/history/{prompt_id}"
|
||||
url = f"http://{settings.COMFYUI_SERVER_ADDRESS}/history/{prompt_id}"
|
||||
|
||||
logger.info(f"⏳ 开始轮询状态 (间隔 {interval_seconds} 秒)...")
|
||||
|
||||
@@ -574,7 +580,8 @@ class ComfyUIServerFLF2V:
|
||||
logger.info(f"⚠️ 轮询时发生错误: {e}")
|
||||
pass
|
||||
|
||||
def get_comfyui_video_bytes(self, filename: str, subfolder: str, file_type: str = "output"):
|
||||
@staticmethod
|
||||
def get_comfyui_video_bytes(filename: str, subfolder: str, file_type: str = "output"):
|
||||
"""
|
||||
从 ComfyUI 的 /view 端点获取视频文件的二进制数据。
|
||||
|
||||
@@ -586,7 +593,7 @@ class ComfyUIServerFLF2V:
|
||||
返回:
|
||||
- 视频文件的二进制内容 (bytes) 或 None。
|
||||
"""
|
||||
url = f"http://{COMFYUI_SERVER_ADDRESS}/view"
|
||||
url = f"http://{settings.COMFYUI_SERVER_ADDRESS}/view"
|
||||
params = {
|
||||
"filename": filename,
|
||||
"subfolder": subfolder,
|
||||
|
||||
Reference in New Issue
Block a user