Как каскадировать deadlines?

Middle+
80 просмотров
AFK Offer AI

При вызове downstream сервиса бери deadline из входящего контекста, а не устанавливай новый. Если клиент дал 5с, а ты ставишь 10с downstream — тратишь ресурсы после того как клиент уже получил timeout. Паттерн: remaining := time.Until(deadline); ctx, cancel := context.WithTimeout(ctx, remaining - buffer). Buffer нужен для обработки ответа. В gRPC deadline каскадируется автоматически через metadata. Для HTTP — пробрасывай через заголовок или считай из контекста.

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

Как спроектировать event sourcing на Go?