python / expert
Snippet
Geltungsbereich-Zustand mit Context Variables
Kontextvariablen (contextvars) ermöglichen es Daten, innerhalb eines spezifischen Ausführungsflusses zu bestehen. Im Gegensatz zu Thread-Local Storage erkennen sie asynchrone Aufgaben, was sie ideal für die Speicherung von Request-IDs oder Transaktionsstatus in Webservern macht.
snippet.py
1
2
3
4
5
6
7
8
9
10
11
12
13
import contextvarsimport asyncioclient_id = contextvars.ContextVar("client_id")async def log_operation(msg):print(f"[Client {client_id.get()}] {msg}")async def handle_request(cid):client_id.set(cid)await log_operation("Starting process")asyncio.run(asyncio.gather(handle_request(1), handle_request(2)))
Erklärung
1
client_id = contextvars.ContextVar("client_id")
Deklariert eine Variable, die isolierten Speicher pro asynchronem Kontext bietet.
2
client_id.set(cid)
Setzt den Wert für die aktuelle Aufgabe, ohne andere gleichzeitig laufende Aufgaben zu beeinflussen.