Фоновая отправка аналитики через 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
