netlops commited on
Commit
6d28e78
·
1 Parent(s): 2f3b0a4

feat(generation): handle media generation failure status

Browse files

- Add specific handling for MEDIA_GENERATION_STATUS_FAILED status
- Extract error code and message from operation response
- Update database task status to failed with error details
- Provide user-friendly error messages with retry suggestions
- Add streaming support for error messages in real-time
- Improve error handling for various failure scenarios

Files changed (1) hide show
  1. src/services/generation_handler.py +23 -1
src/services/generation_handler.py CHANGED
@@ -745,8 +745,30 @@ class GenerationHandler:
745
  )
746
  return
747
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
748
  elif status.startswith("MEDIA_GENERATION_STATUS_ERROR"):
749
- # 失败
750
  yield self._create_error_response(f"视频生成失败: {status}")
751
  return
752
 
 
745
  )
746
  return
747
 
748
+ elif status == "MEDIA_GENERATION_STATUS_FAILED":
749
+ # 生成失败 - 提取错误信息
750
+ error_info = operation.get("operation", {}).get("error", {})
751
+ error_code = error_info.get("code", "unknown")
752
+ error_message = error_info.get("message", "未知错误")
753
+
754
+ # 更新数据库任务状态
755
+ task_id = operation["operation"]["name"]
756
+ await self.db.update_task(
757
+ task_id,
758
+ status="failed",
759
+ error_message=f"{error_message} (code: {error_code})",
760
+ completed_at=time.time()
761
+ )
762
+
763
+ # 返回友好的错误消息,提示用户重试
764
+ friendly_error = f"视频生成失败: {error_message},请重试"
765
+ if stream:
766
+ yield self._create_stream_chunk(f"❌ {friendly_error}\n")
767
+ yield self._create_error_response(friendly_error)
768
+ return
769
+
770
  elif status.startswith("MEDIA_GENERATION_STATUS_ERROR"):
771
+ # 其他错误状态
772
  yield self._create_error_response(f"视频生成失败: {status}")
773
  return
774