• Задача
  • Решение
  • Обсуждение

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 ""
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

00:00:00
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки