Starlette 0.46.0 版本发布:中间件优化与重要改进
Starlette 是一个轻量级的 ASGI 框架/工具包,它为构建高性能的异步 Web 服务提供了基础组件。作为 FastAPI 的底层框架,Starlette 在 Python 异步 Web 开发领域扮演着重要角色。最新发布的 0.46.0 版本带来了一系列值得关注的改进和优化。
GZipMiddleware 中间件增强
本次更新对 GZipMiddleware 进行了两项重要改进:
-
Vary 头部的强制添加:现在当响应可以被压缩时,中间件会确保始终添加 Vary 头部。这个改进解决了缓存一致性问题,确保中转服务器和浏览器能够正确处理压缩和非压缩版本的资源。
-
服务器发送事件(SSE)支持:中间件现在会智能地跳过对服务器发送事件(Server-Sent Events)的压缩。SSE 是一种基于 HTTP 的服务器向客户端推送数据的技术,保持其流式特性对于实时应用至关重要。
异常处理改进
BaseHTTPMiddleware 现在能够正确地传播后台任务中的异常。在之前的版本中,后台任务中的异常可能会被静默忽略,导致难以调试的问题。这一改进使得错误处理更加透明和可靠。
多部分表单解析器参数重命名
MultiPartParser 中的 max_file_size 参数已被重命名为 spool_max_size。这个更名更好地反映了参数的实际用途 - 控制文件数据在内存中的最大缓冲大小。虽然旧名称仍然可用,但建议开发者迁移到新参数名以获得更好的代码可读性。
测试客户端超时参数废弃
TestClient 的 timeout 参数现在被标记为废弃。这个变化是为了引导开发者使用更现代的异步测试模式。在测试异步应用时,直接控制事件循环的超时通常能提供更精确的测试行为。
总结
Starlette 0.46.0 版本虽然是一个小版本更新,但包含了对生产环境非常重要的改进。特别是 GZipMiddleware 的增强使得它在处理各种响应类型时更加健壮,而异常处理的改进则提升了开发体验。这些变化体现了 Starlette 项目对稳定性和开发者体验的持续关注。
对于现有项目,建议开发者特别关注 MultiPartParser 的参数变更和 TestClient 的废弃警告,适时进行代码更新以避免未来兼容性问题。
kernelopenEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。C0105
baihu-dataset异构数据集“白虎”正式开源——首批开放10w+条真实机器人动作数据,构建具身智能标准化训练基座。00
mindquantumMindQuantum is a general software library supporting the development of applications for quantum computation.Python059
PaddleOCR-VLPaddleOCR-VL 是一款顶尖且资源高效的文档解析专用模型。其核心组件为 PaddleOCR-VL-0.9B,这是一款精简却功能强大的视觉语言模型(VLM)。该模型融合了 NaViT 风格的动态分辨率视觉编码器与 ERNIE-4.5-0.3B 语言模型,可实现精准的元素识别。Python00
GLM-4.7GLM-4.7上线并开源。新版本面向Coding场景强化了编码能力、长程任务规划与工具协同,并在多项主流公开基准测试中取得开源模型中的领先表现。 目前,GLM-4.7已通过BigModel.cn提供API,并在z.ai全栈开发模式中上线Skills模块,支持多模态任务的统一规划与协作。Jinja00
AgentCPM-Explore没有万亿参数的算力堆砌,没有百万级数据的暴力灌入,清华大学自然语言处理实验室、中国人民大学、面壁智能与 OpenBMB 开源社区联合研发的 AgentCPM-Explore 智能体模型基于仅 4B 参数的模型,在深度探索类任务上取得同尺寸模型 SOTA、越级赶上甚至超越 8B 级 SOTA 模型、比肩部分 30B 级以上和闭源大模型的效果,真正让大模型的长程任务处理能力有望部署于端侧。Jinja00