To set a timeout for each gRPC client call in Golang, you can use the context.WithTimeout()
function to create a new context with a specific timeout duration.
Here’s an example of setting a timeout for a gRPC client call:
package main
import (
"context"
"log"
"time"
"google.golang.org/grpc"
pb "path/to/your/proto/package" // Import your generated proto package
)
func main() {
conn, err := grpc.Dial("localhost:50051", grpc.WithInsecure())
if err != nil {
log.Fatalf("Failed to connect: %v", err)
}
defer conn.Close()
client := pb.NewYourServiceClient(conn)
// Set timeout for this specific call to 5 seconds
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
resp, err := client.YourMethod(ctx, &pb.YourRequest{})
if err != nil {
log.Fatalf("Failed to call YourMethod: %v", err)
}
log.Printf("Response: %v", resp)
}
In this example, we create a new context with a timeout of 5 seconds using context.WithTimeout()
. We then pass this context to our gRPC client method YourMethod()
as the first argument. If the gRPC call takes longer than 5 seconds, the context will be cancelled and the call will return with a deadline exceeded error.