在Python中,contextvars某种程度上类似于线程的thread local,但主要用于协程。但是在一系列asyncio tasks调用中,上下文本身是否会保持一致呢?让我们来探究一下。
contextvars
让我们简要回顾一下Python中的contextvars
。contextvars
可以在一系列函数调用中维护上下文,并且原生支持asyncio。例如
import asyncio
import contextvars
var = contextvars.ContextVar('var', default={
})
async def sub2():
print(f'in sub2, {
var.get()=}')
var.set('sub1 set')
async def sub1():
print(f'in sub1, {
var.get()=}')
var.set('sub1 set')
awai