Python 字典上的上下文变量
Python contextvars on dict
我需要将字典作为上下文变量提供。我试图使用 @属性 setter,但不明白如何在这种情况下正确设置 key/value。
我有 websockets 服务器,我需要使字典变量对于每个客户端都是唯一的。当然,每次我需要更改字典时,我都可以使用 get 和 set 方法,即
d = dict_var.get()
d['key']='val'
dict_var.set(d)
不过好像不是个好办法
所以,我正在尝试找到关于如何将 contextvar 与 dict 一起使用的正确方法,或者如何使 dict 对于 asyncio 任务上下文(websockets 服务器是异步的)唯一的方法
在我看来,contextvars 应该是解决大多数问题的最后手段。在许多情况下,contextvars 非常有意义,但它并不是适用于所有工作的工具。
拥有这本词典并四处传播有什么问题?如果你不想在你的代码中传递它,那么你可以将它存储在一个中心位置(在另一个字典中,以 websocket 作为键)。
你真的只有两个选择。继续调用 .get()
,修改字典并调用 .set()
- 或者直接在代码中传递字典。
我需要将字典作为上下文变量提供。我试图使用 @属性 setter,但不明白如何在这种情况下正确设置 key/value。
我有 websockets 服务器,我需要使字典变量对于每个客户端都是唯一的。当然,每次我需要更改字典时,我都可以使用 get 和 set 方法,即
d = dict_var.get()
d['key']='val'
dict_var.set(d)
不过好像不是个好办法
所以,我正在尝试找到关于如何将 contextvar 与 dict 一起使用的正确方法,或者如何使 dict 对于 asyncio 任务上下文(websockets 服务器是异步的)唯一的方法
在我看来,contextvars 应该是解决大多数问题的最后手段。在许多情况下,contextvars 非常有意义,但它并不是适用于所有工作的工具。
拥有这本词典并四处传播有什么问题?如果你不想在你的代码中传递它,那么你可以将它存储在一个中心位置(在另一个字典中,以 websocket 作为键)。
你真的只有两个选择。继续调用 .get()
,修改字典并调用 .set()
- 或者直接在代码中传递字典。