Вступить в клуб →
сложнаявопросPython и асинхронность

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

@app.post("/orders")
async def create_order(data: OrderIn):
    order = await save_order(data)
    asyncio.create_task(send_analytics(order))
    return order

Большая часть событий аналитики доходит, но часть пропадает без следа — в логах ни ошибок, ни записей об отправке. Какие две проблемы в этом коде?

  • Цикл держит на задачу слабую ссылку, а исключения задачи некому получить
  • create_task выполняет корутину только после ответа всем клиентам сервиса
  • Задачу, созданную в обработчике, FastAPI отменяет после return
  • send_analytics нужно вызвать через await внутри create_task

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела