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

Как влияет порядок вызова create_task и await на контекст логирования и исполнение кода

Порядок create_task и await влияет на контекст логирования и порядок выполнения:

  1. await перед create_task
    • Код выполняется синхронно до await
    • Контекст логирования сохраняется
    python
    async def foo():
        logger.info("Start")
        await asyncio.sleep(0)  # точка переключения
        task = asyncio.create_task(bar())  # контекст сохраняется
  1. create_task перед await
    • Задача стартует сразу, но может выполниться позже
    • Контекст может потеряться, если был await после создания
    python
    async def foo():
        logger.info("Start")
        task = asyncio.create_task(bar())  # контекст копируется здесь
        await asyncio.sleep(1)  # задача может выполняться с другим контекстом

Для сохранения контекста используйте contextvars или передавайте контекст явно. В asyncio контекст копируется при создании задачи, но не при последующих переключениях.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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