Python 字典上的上下文变量

Python contextvars on dict

我需要将字典作为上下文变量提供。我试图使用 @属性 setter,但不明白如何在这种情况下正确设置 key/value。

我有 websockets 服务器,我需要使字典变量对于每个客户端都是唯一的。当然,每次我需要更改字典时,我都可以使用 getset 方法,即

d = dict_var.get()
d['key']='val'
dict_var.set(d)

不过好像不是个好办法

所以,我正在尝试找到关于如何将 contextvar 与 dict 一起使用的正确方法,或者如何使 dict 对于 asyncio 任务上下文(websockets 服务器是异步的)唯一的方法

在我看来,contextvars 应该是解决大多数问题的最后手段。在许多情况下,contextvars 非常有意义,但它并不是适用于所有工作的工具。

拥有这本词典并四处传播有什么问题?如果你不想在你的代码中传递它,那么你可以将它存储在一个中心位置(在另一个字典中,以 websocket 作为键)。

你真的只有两个选择。继续调用 .get(),修改字典并调用 .set() - 或者直接在代码中传递字典。