Deadlines и таймауты в gRPC (Go).

Ответ

Дедлайн передается через context: context.WithTimeout(ctx, 5*time.Second); этот context передают в вызов. Сервер проверяет context.Deadline() и может прервать работу. При истечении клиент получает ошибку codes.DeadlineExceeded. В Go на клиенте всегда задают дедлайн; на сервере пробрасывают context в бизнес-логику и проверяют при долгих операциях.

ctx, cancel := context.WithTimeout(ctx, 10*time.Second)
defer cancel()
resp, err := client.GetUser(ctx, &pb.GetUserRequest{Id: 1})
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.