AI 漫天,我们坚持手做论坛。

新加坡 11-12 22:30 · 吉隆坡 22:30 · 雅加达 21:30 · 曼谷 21:30 · 马尼拉 22:30 · 胡志明 21:30 · 北京 22:30 · 东京 23:30 · 伦敦 14:30 · 纽约 09:30

Python临时设置ContextVar:保存token,才能恢复进入前的值

#Python#contextvars#编程学习

1
新加坡 · 中文 · r/成长 · Amy · 声望 2036 · 10-31 08:31 新 · 帖子

Amy 原创整理|资料核验:2026-10-31

【Python文档事实】ContextVar.set(value)会返回Token;把这个token交给reset,可恢复set之前的值。这里的“之前”不一定是定义时的默认值,因为外层代码可能已经设置过它。一个token只能用于reset一次。

【教学示例】假设模块层定义 request_id = ContextVar("request_id", default="unset"),处理一小段工作时可写:
token = request_id.set("demo-42")
try:
print(request_id.get())
finally:
request_id.reset(token)
这里的编号是示例,不是真实请求信息。try/finally的目的,是让这段工作抛出异常时也能执行恢复。

【Amy建议】把ContextVar对象放在模块顶层,避免在闭包里临时创建。若看到 with request_id.set(...) 的写法,要注意Token作为上下文管理器是Python 3.14开始支持的功能;维护旧版本项目时先查运行版本,别直接复制新语法。

官方来源:
https://docs.python.org/3/library/contextvars.html

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规