ContextVar not preserved when cell contains `await`
- Ngôn ngữ chính
- Python
- Star
- 734
- Fork
- 412
- Merge trung bình
- 1 ngày 5 giờ
- Pull request đã merge (30 ngày)
- 8
Mô tả
See https://gist.github.com/mvolfik/2582939ec00120a04503507214c24105
```python3
import contextvars, asyncio
VAR = contextvars.ContextVar("VAR", default="default")
async def produce_result(x):
return x
async def read_var():
print("Var:", VAR.get())
# The following is broken
# In[3]:
result = await produce_result("bug fixed yayy")
VAR.set(result)
# In[4]:
await read_var()
# Var: default
# The following works
# In[5]:
result = await produce_result("this worked before")
# In[6]:
VAR.set(result)
# In[7]:
await read_var()
# Var: this worked before
```
In the working case, `await` result is stored in a variable, and `VAR` is set from cell which is fully synchronous (idk ipython internals, but that's what I guess makes the difference). What breaks is setting var from the same cell where we call and await the async function.
I'm using `ipykernel==6.2.0`. Neither of these cases worked (both outputted 'default') with `ipykernel==5.5.0`.
Related to ipython issue ipython/ipython#11565, which was fixed by #632
Hướng dẫn đóng góp
Đánh giá
Issue này chưa được đánh giá.