После отмены отвечай по-разному: DeadlineExceeded — 504, Canceled — тихий выход. Реализуйте handleCancel(ctx) string: select по ctx.Done() и switch по ctx.Err().
- Задача
- Решение
- Обсуждение
HandleCancel: различить причину
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 ""
}