Prhub

#21755 [diffusion] UX: replace deprecated ORJSONResponse with orjson_response

原始 PR 作者 mickqian 合并时间 2026-03-31 21:41 文件变更 3 提交数 2 评论 5 代码增减 +15 / -15

执行摘要

替换已弃用的 ORJSONResponse 为项目内 orjson_response,确保扩散模块 HTTP 响应的序列化一致性。

从PR标题和变更内容推断,动机是替换已弃用的FastAPI ORJSONResponse,以避免deprecation警告并保持代码兼容性。虽然没有具体的issue引用,但这是常见的维护性更新。

建议工程师在阅读此PR时,重点关注common_api.py的decorator是否应添加response_class以维持性能。此PR的其他部分为简单替换,适合快速扫描,无需深入分析。

讨论亮点

review中,gemini-code-assist[bot]指出,common_api.py中移除response_class参数会使得/models和/models/{model:path}端点回退到默认JSONResponse,损失orjson的性能优势(如numpy支持)。建议使用SGLangORJSONResponse作为response_class来维持优化序列化。但此评论未被回复,PR已合并,该问题可能未解决。

实现拆解

变更涉及三个文件:

  1. http_server.py:移除'from fastapi.responses import ORJSONResponse',添加'from sglang.srt.utils.json_response import orjson_response',并将vertex_generate函数中的返回语句从ORJSONResponse(...)替换为orjson_response(...)。
  2. common_api.py:类似地更新导入,将available_models和retrieve_model函数的直接返回调用替换,但移除了这两个端点decorator的response_class=ORJSONResponse参数,可能导致回退到默认JSONResponse。
  3. weights_api.py:更新导入,并将update_weights_from_disk和get_weights_checksum函数的返回语句替换。
文件 模块 状态 重要度
python/sglang/multimodal_gen/runtime/entrypoints/http_server.py diffusion/http_server modified 3.0
python/sglang/multimodal_gen/runtime/entrypoints/openai/common_api.py diffusion/openai_api modified 4.0
python/sglang/multimodal_gen/runtime/entrypoints/post_training/weights_api.py diffusion/post_training modified 3.0

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

关键符号

vertex_generate available_models retrieve_model update_weights_from_disk get_weights_checksum

评论区精华

Decorator response_class 移除导致的序列化问题 性能

gemini-code-assist[bot] 指出移除 response_class 参数会使端点回退到默认 JSONResponse,损失 orjson 的性能优化和自定义序列化支持。

结论:建议使用 SGLangORJSONResponse 作为 response_class,但未在 PR 中实施或讨论。 · unresolved

风险与影响

主要风险在于common_api.py的端点可能失去自定义序列化行为,导致性能下降(序列化速度变慢)和功能性问题(如不支持numpy类型)。此外,如果项目依赖特定的序列化选项,可能出现不一致响应。风险文件为common_api.py。

影响范围仅限于扩散模块的HTTP API响应序列化,用户可能察觉不到变化或仅有轻微延迟。开发团队需要关注此变更以确保性能一致,但整体影响较小,属于低风险维护。

潜在性能回退 序列化不一致性

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

执行摘要

  • 一句话:替换已弃用的ORJSONResponse为项目内orjson_response,确保扩散模块HTTP响应的序列化一致性。
  • 推荐动作:建议工程师在阅读此PR时,重点关注common_api.py的decorator是否应添加response_class以维持性能。此PR的其他部分为简单替换,适合快速扫描,无需深入分析。

功能与动机

从PR标题和变更内容推断,动机是替换已弃用的FastAPI ORJSONResponse,以避免deprecation警告并保持代码兼容性。虽然没有具体的issue引用,但这是常见的维护性更新。

实现拆解

变更涉及三个文件:

  1. http_server.py:移除'from fastapi.responses import ORJSONResponse',添加'from sglang.srt.utils.json_response import orjson_response',并将vertex_generate函数中的返回语句从ORJSONResponse(...)替换为orjson_response(...)。
  2. common_api.py:类似地更新导入,将available_models和retrieve_model函数的直接返回调用替换,但移除了这两个端点decorator的response_class=ORJSONResponse参数,可能导致回退到默认JSONResponse。
  3. weights_api.py:更新导入,并将update_weights_from_disk和get_weights_checksum函数的返回语句替换。

关键文件:

  • python/sglang/multimodal_gen/runtime/entrypoints/http_server.py(模块 diffusion/http_server): 主HTTP服务器入口,替换直接响应调用,确保基础功能更新
  • python/sglang/multimodal_gen/runtime/entrypoints/openai/common_api.py(模块 diffusion/openai_api): OpenAI兼容API入口,decorator变更可能导致性能回退,是关键风险点
  • python/sglang/multimodal_gen/runtime/entrypoints/post_training/weights_api.py(模块 diffusion/post_training): 权重更新API,替换响应调用,属于常规维护

关键符号:vertex_generate, available_models, retrieve_model, update_weights_from_disk, get_weights_checksum

评论区精华

review中,gemini-code-assist[bot]指出,common_api.py中移除response_class参数会使得/models和/models/{model:path}端点回退到默认JSONResponse,损失orjson的性能优势(如numpy支持)。建议使用SGLangORJSONResponse作为response_class来维持优化序列化。但此评论未被回复,PR已合并,该问题可能未解决。

  • Decorator response_class移除导致的序列化问题 (performance): 建议使用SGLangORJSONResponse作为response_class,但未在PR中实施或讨论。

风险与影响

  • 风险:主要风险在于common_api.py的端点可能失去自定义序列化行为,导致性能下降(序列化速度变慢)和功能性问题(如不支持numpy类型)。此外,如果项目依赖特定的序列化选项,可能出现不一致响应。风险文件为common_api.py。
  • 影响:影响范围仅限于扩散模块的HTTP API响应序列化,用户可能察觉不到变化或仅有轻微延迟。开发团队需要关注此变更以确保性能一致,但整体影响较小,属于低风险维护。
  • 风险标记:潜在性能回退, 序列化不一致性

关联脉络

  • PR #21746 [diffusion] Fix typo: 同为扩散模块的维护性PR,共享'diffusion'标签,但无直接技术关联

参与讨论