gpt4 book ai didi

python - 在 asyncio add_done_callback 回调中访问上下文变量

转载 作者:行者123 更新时间:2023-12-04 07:51:09 24 4
gpt4 key购买 nike

在 Python 异步函数中,我正在创建 ContextVar、任务并将回调附加到它:

bbb = contextvars.ContextVar('aaa')
bbb.set(3)
task = self.loop.create_task(self.someFunc())
task.add_done_callback(self.commonCallback)
bbb.set(4)
在回调中,我首先启动调试器:
def commonCallback(self, result):
pdb.set_trace()
try:
r = result.result()
print(r)
except:
self.log.exception('commonCallback')
在调试器中:
-> try:
(Pdb) bbb.get()
*** NameError: name 'bbb' is not defined
(Pdb) ctx = contextvars.copy_context()
(Pdb) print(list(ctx.items()))
[(<ContextVar name='aaa' at 0xa8245df0>, 3)]
(Pdb)
ContextVar 在那里,但我无法访问它。所以,我错过了一些东西,但找不到什么?

最佳答案

bbb局部变量是在一个地方定义的,所以它不会在另一个地方自动访问,例如 commonCallback代码中其他地方定义的函数。 documentation声明“应在顶级模块级别创建上下文变量”,因此您应该先尝试。

关于python - 在 asyncio add_done_callback 回调中访问上下文变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66975603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com