Добавить новость

contextvars: почему thread-local сломался в asyncio и как это починили

В мире потоков всё было просто: threading.local() даёт каждому потоку свои данные. Request ID, текущий пользователь, database connection — положил в thread-local, достал когда нужно. FastAPI, Flask, Django — все так делали.

Потом пришёл asyncio, и эта модель сломалась. В одном потоке выполняются тысячи корутин, и thread-local у них общий. Положил request ID в одной корутине — прочитал чужой в другой. contextvars, появившийся в Python 3.7, решает эту проблему, но механика его работы не очевидна.

Губернаторы России



Заголовки
Заголовки
Moscow.media
Ria.city

Новости России




Rss.plus

Музыкальные новости


Новости тенниса







Новости спорта