error_codes.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. """
  2. 错误码定义(与前端同步)
  3. """
  4. # 客户端错误 (4xxx)
  5. class ErrorCode:
  6. # 客户端错误
  7. INVALID_MESSAGE = 4000
  8. INVALID_AUDIO_FORMAT = 4001
  9. AUDIO_TOO_LARGE = 4002
  10. RATE_LIMIT_EXCEEDED = 4003
  11. SESSION_EXPIRED = 4004
  12. UNAUTHORIZED = 4005
  13. # 服务端错误 (5xxx)
  14. INTERNAL_ERROR = 5000
  15. CONNECTION_POOL_EXHAUSTED = 5001
  16. DOUBAO_API_ERROR = 5002
  17. DOUBAO_API_TIMEOUT = 5003
  18. SERVICE_UNAVAILABLE = 5004
  19. ERROR_MESSAGES = {
  20. ErrorCode.INVALID_MESSAGE: "消息格式错误",
  21. ErrorCode.INVALID_AUDIO_FORMAT: "音频格式不支持",
  22. ErrorCode.AUDIO_TOO_LARGE: "音频数据过大",
  23. ErrorCode.RATE_LIMIT_EXCEEDED: "请求频率超限",
  24. ErrorCode.SESSION_EXPIRED: "会话已过期",
  25. ErrorCode.UNAUTHORIZED: "未授权",
  26. ErrorCode.INTERNAL_ERROR: "内部服务器错误",
  27. ErrorCode.CONNECTION_POOL_EXHAUSTED: "服务繁忙,请稍后重试",
  28. ErrorCode.DOUBAO_API_ERROR: "豆包API错误",
  29. ErrorCode.DOUBAO_API_TIMEOUT: "豆包API超时",
  30. ErrorCode.SERVICE_UNAVAILABLE: "服务不可用",
  31. }
  32. def get_error_message(code: int) -> str:
  33. """获取错误消息"""
  34. return ERROR_MESSAGES.get(code, "未知错误")
  35. def is_recoverable_error(code: int) -> bool:
  36. """判断错误是否可恢复"""
  37. # 客户端错误大部分可恢复
  38. if 4000 <= code < 5000:
  39. return code not in [ErrorCode.SESSION_EXPIRED, ErrorCode.UNAUTHORIZED]
  40. # 服务端错误大部分可恢复
  41. return code != ErrorCode.SERVICE_UNAVAILABLE