Skip to content

Instantly share code, notes, and snippets.

@kgriffs
Created May 5, 2022 18:50
Show Gist options
  • Save kgriffs/ffa31214be6b0db6b5b7a0b5cd52bc3f to your computer and use it in GitHub Desktop.
Save kgriffs/ffa31214be6b0db6b5b7a0b5cd52bc3f to your computer and use it in GitHub Desktop.
contextvars example
import asyncio
import contextvars
import random
var = contextvars.ContextVar('var', default=1776)
all_before = set()
all_after = set()
async def do_something():
await asyncio.sleep(random.random() * 2)
all_before.add(var.get())
var.set(2112)
await asyncio.sleep(random.random() * 2)
all_after.add(var.get())
async def driver():
loop = asyncio.get_running_loop()
tasks = [
loop.create_task(do_something())
for __ in range(100)
]
await asyncio.gather(*tasks)
if __name__ == '__main__':
asyncio.run(driver())
print(all_before)
print(all_after)
assert len(all_before) == 1
assert len(all_after) == 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment