Back to results for “Performance”
.NET › gRPC Services

How do you configure deadlines and cancellation for gRPC calls, and how does this differ from typical HTTP request timeouts?

Advanced

Answer

gRPC clients specify a deadline (an absolute point in time by which the call must complete) rather than a simple duration-based timeout, and this deadline is automatically propagated through the entire call chain if a server-side method itself makes further downstream gRPC calls -- meaning if service A calls service B which calls service C, all with a shared deadline, C automatically knows how much time budget remains from the original caller's perspective, letting the whole call chain fail fast consistently rather than each hop having its own independent, potentially conflicting timeout.
var deadline = DateTime.UtcNow.AddSeconds(5);
var response = await client.GetOrderAsync(request, deadline: deadline);

// If GetOrder's server implementation calls ANOTHER gRPC service,
// the remaining deadline automatically propagates to that downstream call too,
// so the whole chain respects the original 5-second budget
Real-world example A deeply nested microservices call chain (gateway -> order service -> inventory service -> pricing service) automatically respects a single 5-second deadline set by the original client, with each hop able to check remaining time and fail fast rather than each service independently timing out at different, uncoordinated points.

Common follow-ups: How does deadline propagation work automatically across multiple hops?;What happens to in-flight work on the server when a deadline is exceeded mid-call?