fix: improve error handling and logging in video generation process

This commit is contained in:
wxg0103 2025-09-19 14:51:17 +08:00
parent 2060012660
commit 47d4bce84f
2 changed files with 11 additions and 11 deletions

View File

@ -15,6 +15,7 @@ from oss.serializers.file import FileSerializer, mime_types
from models_provider.tools import get_model_instance_by_model_workspace_id
from django.utils.translation import gettext
class BaseImageToVideoNode(IImageToVideoNode):
def save_context(self, details, workflow_manage):
self.context['answer'] = details.get('answer')
@ -47,7 +48,7 @@ class BaseImageToVideoNode(IImageToVideoNode):
last_frame_url = self.get_file_base64(last_frame_url)
video_urls = ttv_model.generate_video(question, negative_prompt, first_frame_url, last_frame_url)
# 保存图片
if video_urls is None:
if video_urls is None or video_urls == '':
return NodeResult({'answer': gettext('Failed to generate video')}, {})
file_name = 'generated_video.mp4'
if isinstance(video_urls, str) and video_urls.startswith('http'):
@ -71,7 +72,7 @@ class BaseImageToVideoNode(IImageToVideoNode):
'history_message': history_message, 'question': question}, {})
def get_file_base64(self, image_url):
try :
try:
if isinstance(image_url, list):
image_url = image_url[0].get('file_id')
if isinstance(image_url, str) and not image_url.startswith('http'):
@ -87,7 +88,6 @@ class BaseImageToVideoNode(IImageToVideoNode):
raise ValueError(
gettext("Failed to obtain the image"))
def generate_history_ai_message(self, chat_record):
for val in chat_record.details.values():
if self.node.id == val['node_id'] and 'image_list' in val:

View File

@ -85,9 +85,8 @@ class GenerationVideoModel(MaxKBBaseModel, BaseGenerationVideo):
# --- 异步提交任务 ---
rsp = self._safe_call(VideoSynthesis.async_call, **params)
if rsp.status_code != HTTPStatus.OK:
maxkb_logger.info('提交任务失败status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
return None
maxkb_logger.info(f'提交任务失败status_code: {rsp.status_code}, code: {rsp.code}, message: {rsp.message}')
raise RuntimeError(f'提交任务失败status_code: {rsp.status_code}, code: {rsp.code}, message: {rsp.message}')
maxkb_logger.info("task_id:", rsp.output.task_id)
@ -96,8 +95,10 @@ class GenerationVideoModel(MaxKBBaseModel, BaseGenerationVideo):
if status.status_code == HTTPStatus.OK:
maxkb_logger.info("当前任务状态:", status.output.task_status)
else:
maxkb_logger.error('获取任务状态失败status_code: %s, code: %s, message: %s' %
(status.status_code, status.code, status.message))
maxkb_logger.error(
f'获取任务状态失败status_code: {status.status_code}, code: {status.code}, message: {status.message}')
raise RuntimeError(
f'获取任务状态失败status_code: {status.status_code}, code: {status.code}, message: {status.message}')
# --- 等待任务完成 ---
rsp = self._safe_call(VideoSynthesis.wait, task=rsp, api_key=self.api_key)
@ -105,6 +106,5 @@ class GenerationVideoModel(MaxKBBaseModel, BaseGenerationVideo):
maxkb_logger.info("视频生成完成!视频 URL:", rsp.output.video_url)
return rsp.output.video_url
else:
maxkb_logger.error('生成失败status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
return None
maxkb_logger.error(f'生成失败status_code: {rsp.status_code}, code: {rsp.code}, message: {rsp.message}')
raise RuntimeError(f'生成失败status_code: {rsp.status_code}, code: {rsp.code}, message: {rsp.message}')