直接在 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')

这似乎按预期工作。