Встречается на собеседованиях • сегодня

Для чего нужны контекстные переменные в asyncio

Контекстные переменные (contextvars) в asyncio позволяют хранить и передавать состояние между асинхронными задачами, сохраняя его даже при переключении контекста выполнения. Они особенно полезны в веб-фреймворках для передачи данных запроса между middleware, хендлерами и другими компонентами без явной передачи через аргументы.

Пример:

python
import contextvars
import asyncio

request_id = contextvars.ContextVar('request_id')

async def handle_request():
    print(f"Request ID: {request_id.get()}")

async def middleware():
    request_id.set(42)  # Устанавливаем значение для текущего контекста
    await handle_request()

asyncio.run(middleware())  # Выведет: Request ID: 42

Ключевые преимущества:

  • Изолированность значений между разными задачами
  • Сохранение контекста при await
  • Альтернатива глобальным переменным в асинхронном коде
  • Поддержка вложенных контекстов через copy_context()
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы