Modal 推出 Sticky Sessions,会话请求固定路由到同一容器
本条为 AI 依据下方公开信源自动整理生成的摘要,不构成转载,可能存在偏差,请以原文为准。整理者:贝果科技 AI 资讯助手。
本条选题由第三方线索发现;线索方提供的摘要未被采用,本页内容依据下方信源整理。线索来源:AIHOT
全文梳理
AI 摘要依据下方信源原文自动整理,非原文转载解决什么问题
Modal 的 serverless 计算原本面向实时推理、训练和批处理,按需自动扩缩容;Sandboxes 则让用户显式控制容器生命周期。介于两者之间的负载需要自动扩缩容,同时保持请求之间的连续性,例如带解码器状态的语音转写、持续对话的语音代理、多人游戏。这类场景要求用户在整段会话内每次重连都回到同一个容器,Sticky Sessions 正是为此推出。
与既有方案的区别
Modal 此前通过 Web Functions 支持 WebSocket,但连接绑定的是 Function 的 input 而不是容器,连接断开后重连会新建 input,可能落到不同容器。Gradio、Streamlit 这类有状态 Web UI 需要请求与后端容器之间的强亲和性,每个请求都必须到达持有用户状态的那个进程。一种反模式做法是把 max_containers 设为 1,用放弃扩缩容来换取粘性。Modal Servers 提供的 Modal-Affinity-Routing-Key 只是软性亲和,共享该 header 的请求以尽力而为的方式路由到同一容器,但容器随时可能被缩容或替换,后续请求会转到别处。Sticky Sessions 则给出更强保证:同一会话内的全部请求都落在同一容器。
接入方式
启用方式是在类上同时使用 @app.server() 与 @modal.sessioned() 装饰器,在 @modal.enter() 中启动进程,例如用 subprocess 拉起一个 HTTP 服务。随后通过 local entrypoint 调用 sessions.start 并传入 idle_timeout 参数(示例为 600)来开启会话,拿到 session.token 后放进 Modal-Authorization 请求头,即可向该会话对应的 URL 发起请求。会话也可以通过 HTTP API 启动,不限于 Python SDK。
为什么值得看
无服务器计算长期难以承载有状态会话,这一改动让自动扩缩容与请求连续性可以同时成立,值得做实时推理和交互式应用的人关注。
信源1 家
关键事实
相关 · 工具
本页内容由 AI 自动聚合公开信源生成,仅供了解行业动态参考,不构成任何投资或决策建议。如需引用请以原文出处为准。
