You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python开发的Cloud Run实例之间共享全局字典变量?

可行的轻量解决方案

方案1:开启Cloud Run会话亲和性(改造成本最低)

这是目前不需要改动业务代码就能解决问题的最优方案:

  • 直接在Cloud Run服务的配置页开启会话亲和性功能,开启后同一用户的连续请求会被固定路由到同一个处理实例,你的回调请求就会落到之前存储了对应session_id数据的实例上,不需要跨实例共享数据
  • 注意事项:仅适合登录回调流程耗时较短的场景(建议控制在30分钟以内),如果实例因为缩容、故障被销毁,内存中的数据依然会丢失,不适合需要长时间存储的会话数据

方案2:用Cloud Storage存储临时KV数据(轻量无服务器)

比数据库方案轻量很多,不需要维护任何服务实例:

  • 新建一个GCS存储桶,设置生命周期规则,自动删除创建时间超过1小时的文件,避免冗余存储
  • 把原来写入全局runtimes字典的逻辑,改成将对应session_id的关联数据序列化为JSON,写入GCS桶中以session_id命名的文件
  • 回调时直接读取GCS中对应session_id的文件反序列化即可,小流量场景下存储和读写成本几乎为0

方案3:使用Cloud Firestore 原生模式(兼容KV读写逻辑)

如果你的会话数据需要更高的可靠性,这个方案比传统数据库轻量得多:

  • Firestore是全托管Serverless KV数据库,不需要维护实例、配置扩容,按实际读写量付费,低用量场景完全免费
  • 读写逻辑和你现在用字典的逻辑几乎一致,只需要把runtimes[session_id]的读写操作替换为Firestore对应文档的读写接口即可,代码改动量极小

额外提醒:即使Cloud Run不扩容多实例,实例本身也会因为空闲、资源调度等原因被系统自动回收,存在内存中的全局变量数据随时可能丢失,原本的内存存储方案本身就不适合生产环境使用。

内容的提问来源于stack exchange,提问作者Karas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:06:04