Canceling a call
When you want to stop a call depending on certain conditions or interrupt a long-lived stream, gRPC provides you with cancellation functions that you can execute at any time.
If you have worked with Go on any distributed system code or API before, you probably saw a type called context
. This is the idiomatic way to provide request-scoped information and signal across the API’s actors, and this is an important piece of gRPC.
If you did not pay attention, up until now, we used context.Background()
every time we made a request. In the Golang documentation, this is described as returning “a non-nil, empty Context. It is never cancelled, has no values, and has no deadline.” As you can guess, this alone is not suitable for production-ready APIs for the following reasons:
- What if the user wants to kill the request early?
- What if the API call never returns?
- What if we need the server to be aware of global values (e.g., an authentication...