HandleCancel: различить причину
После отмены отвечай по-разному: DeadlineExceeded — 504, Canceled — тихий выход. Реализуйте handleCancel(ctx) string: select по ctx.Done() и switch по ctx.Err().
Показать решение
GolangРешение
func handleCancel(ctx context.Context) string {
select {
case <-ctx.Done():
switch ctx.Err() {
case context.DeadlineExceeded:
return "504"
case context.Canceled:
return "client-gone"
}
}
return ""
}Записаться на разбор
10 000 ₽ · 60 минут · онлайн