pymss Server 错误格式

June 6, 2026 · View on GitHub

pymss server 返回 JSON(JavaScript Object Notation,文本对象表示格式)错误对象。客户端可通过 HTTP(HyperText Transfer Protocol,超文本传输协议)状态码判断错误大类,并通过 error.code 执行业务分支处理。

错误对象格式如下:

{
  "error": {
    "message": "Model 'foo' is not loaded by this process.",
    "type": "invalid_request_error",
    "param": "model",
    "code": "model_not_found"
  }
}

下表说明错误对象字段。error.code 是面向客户端处理逻辑的稳定字段。

字段说明
error.message可读错误信息
error.type错误类别,取值包括 invalid_request_errorserver_error
error.param相关参数名;无明确参数时为 null
error.code稳定错误码

错误码

下表列出 server 代码中显式返回的错误码。type=invalid_request_error 表示请求、状态或资源限制导致的错误;type=server_error 表示下载、模型加载、推理或响应编码过程中的 server 侧失败。

HTTPcodetype说明
400invalid_requestinvalid_request_errorJSON 结构无效、字段类型错误或 Content-Length 非法
400invalid_query_parameterinvalid_request_error二进制 PCM 请求的 query 参数格式无效
400invalid_modelinvalid_request_errormodel 为空,或模型不支持加载和推理
404model_not_foundinvalid_request_errormodel 未匹配当前已加载模型的 catalog name,或 catalog 中不存在
400invalid_audio_formatinvalid_request_errorformat 必须为 pcm_f32lepcm_s16le
400invalid_sample_rateinvalid_request_error请求 sample rate 与模型 sample rate 不一致
400invalid_channel_countinvalid_request_errorchannels 必须为 12
400invalid_base64invalid_request_errorJSON input.data 必须是合法 base64
400empty_audioinvalid_request_errordecoded PCM bytes 为空
400invalid_audio_lengthinvalid_request_errorPCM bytes 长度无法按 format 和 channels 对齐
400invalid_audio_datainvalid_request_errorpcm_f32le 输入包含 NaN(Not a Number,非数字)或 Inf(Infinity,无穷大)
400missing_audio_metadatainvalid_request_error二进制 PCM 请求缺少 formatsample_ratechannels
415unsupported_content_typeinvalid_request_errorContent-Type 必须为 application/jsonapplication/octet-stream
400invalid_steminvalid_request_error请求了模型不支持的 stem,或 stems 类型非法
400invalid_response_formatinvalid_request_errorresponse_format 必须为 jsonzip
400invalid_output_audio_formatinvalid_request_erroroutput_audio_format 不受支持,或 JSON 响应请求了非 pcm_f32le 输出
413request_too_largeinvalid_request_error请求体或音频时长超过 server 限制
401invalid_api_keyinvalid_request_errorBearer token(Bearer 令牌)缺失或不匹配
429server_overloadedinvalid_request_error推理队列已满
409model_operation_in_progressinvalid_request_error模型加载、卸载或切换正在进行
409model_download_in_progressinvalid_request_error模型下载正在进行
503model_not_loadedinvalid_request_error当前没有已加载模型
400invalid_inference_parameterinvalid_request_error运行时加载参数未知、格式非法,或当前模型配置不支持
400invalid_download_sourceinvalid_request_error下载源或下载 endpoint 非法
504separation_timeoutinvalid_request_error推理超过 --request-timeout-seconds
500model_unload_failedserver_error卸载当前模型失败
500model_load_failedserver_error加载请求模型失败
500model_download_failedserver_error下载模型失败
500separation_failedserver_error推理或响应编码过程失败
500webui_assets_missingserver_error启用了 WebUI(Web User Interface,浏览器用户界面),但构建后的 WebUI 静态资源缺失

资源限制相关错误

资源限制由启动参数控制。下表列出限制项和对应错误。

限制项参数错误
HTTP body 大小--max-request-bytes超过限制时返回 413 request_too_large
decoded PCM 时长--max-audio-seconds超过限制时返回 413 request_too_large;参数为 0 时关闭该时长限制
推理队列长度--max-queue-size正在处理和等待处理的请求数量达到限制时返回 429 server_overloaded
单请求推理耗时--request-timeout-seconds超过限制时返回 504 separation_timeout;参数为 0 时关闭该超时限制

推理执行由单模型锁串行化。--max-queue-size 统计正在处理和等待处理的请求数量,因此一个请求进入推理锁等待区后仍占用队列额度。

模型操作冲突

模型加载或切换期间,server 将公开状态中的已加载模型置空,并将 /health 中的 model_loading 设为 true。该状态下,推理请求返回 409 model_operation_in_progress/v1/models 返回空列表。

模型下载、模型加载和模型切换互斥。模型下载期间,另一个下载请求返回 409 model_download_in_progress,加载请求返回 409 model_download_in_progress。模型加载或切换期间,下载请求返回 409 model_operation_in_progress

鉴权错误

API key(Application Programming Interface key,接口访问密钥)只作用于 /v1/* 端点。server 设置 --api-key 后,客户端必须发送 Bearer token(Bearer 令牌):

Authorization: Bearer <api-key>

令牌缺失或不匹配时,/v1/* 端点返回 401 invalid_api_key/health 不要求鉴权。