直接在 contextvars.Context 中设置变量
Setting vars in a contextvars.Context directly
我想在单独的 contextvars.Context 中调用一些函数,调用者在此上下文中设置一些变量:
def call_with_context(var, callback, **cb_kw):
context = contextvars.copy_context()
context.set('var', var) # not possible
context.run(callback, **cb_kw)
以便回调和从中调用的任何代码都能够通过 contextvars.copy_context()
, but it looks like there is no API to do this, by design of contextvars.Context
, and the only way to do this is to make a wrapper that sets the var via ContextVar.set()
and calls the callback, and call that wrapper via context.run
访问 var
,这是实现它的唯一方法还是我遗漏了什么(也许 contextvars
设计只需要做一些不同的事情)?
实际上在检查了一个建议的相关问题后,我发现这很简单
context.run(var.set, 'var')
这似乎按预期工作。
我想在单独的 contextvars.Context 中调用一些函数,调用者在此上下文中设置一些变量:
def call_with_context(var, callback, **cb_kw):
context = contextvars.copy_context()
context.set('var', var) # not possible
context.run(callback, **cb_kw)
以便回调和从中调用的任何代码都能够通过 contextvars.copy_context()
, but it looks like there is no API to do this, by design of contextvars.Context
, and the only way to do this is to make a wrapper that sets the var via ContextVar.set()
and calls the callback, and call that wrapper via context.run
访问 var
,这是实现它的唯一方法还是我遗漏了什么(也许 contextvars
设计只需要做一些不同的事情)?
实际上在检查了一个建议的相关问题后,我发现这很简单
context.run(var.set, 'var')
这似乎按预期工作。