Sari la conținutul principal
🔒 Mod previzualizare. Primele cincisprezece lecții Foundations sunt gratuite; aceasta este Pro. Pornește un trial de 7 zile pentru a debloca editorul, sugestiile AI și restul programului. Card necesar, anulează oricând în Dashboard.Pornește trial de 7 zile →
← CursuriSenior Deep-DivesModule 6 · FAANG-2026 deep divescontextvars in async — Task context isolationpredict108 / 161
+150 XP
Sarcină
📝 **Sarcina:** Preziceți rezultatul exact. \`req_id\` este setat la \`"req-A"\` în \`main\`. Apoi: (1) \`wait child()\` — vede copilul „req-A” sau implicit? (2) \`asyncio.create_task(isolated())\` unde izolat nu \`set("req-B")\` — se scurge schimbarea sa înapoi în principal? (3) După ambele, ce vede principalul? 📋 Implementați funcția de mai sus. Testele rulează automat. 💡 **Sugestie:** Recitiți teoria dacă rămâneți blocat.
Prezice ieșirea

Citește codul cu atenție

import asyncio
import contextvars

req_id = contextvars.ContextVar("req_id", default="none")


async def child():
    return f"child:{req_id.get()}"


async def isolated():
    req_id.set("req-B")
    return f"isolated:{req_id.get()}"


async def main():
    req_id.set("req-A")
    a = await child()
    t = asyncio.create_task(isolated())
    b = await t
    return [a, b, f"main:{req_id.get()}"]


print(asyncio.run(main()))

Ce va afișa programul? Scrie aici:

💬 Discuție

Fii primul — pune o întrebare sau împărtășește un sfat.
Conectează-te pentru a te alătura discuției. Citirea este gratuită.
Se încarcă discuția…