Elaborate on unary cancellation
diff --git a/examples/python/cancellation/README.md b/examples/python/cancellation/README.md
index 64ffa3c..08aea49 100644
--- a/examples/python/cancellation/README.md
+++ b/examples/python/cancellation/README.md
@@ -34,6 +34,29 @@
signal.signal(signal.SIGINT, cancel_request)
```
+It's also important that you not block indefinitely on the RPC. Otherwise, the
+signal handler will never have a chance to run.
+
+```python
+while True:
+ try:
+ result = future.result(timeout=_TIMEOUT_SECONDS)
+ except grpc.FutureTimeoutError:
+ continue
+ except grpc.FutureCancelledError:
+ break
+ print("Got response: \n{}".format(result))
+ break
+```
+
+Here, we repeatedly block on a result for up to `_TIMEOUT_SECONDS`. Doing so
+gives us a chance for the signal handlers to run. In the case that out timeout
+was reached, we simply continue on in the loop. In the case that the RPC was
+cancelled (by our user's ctrl+c), we break out of the loop cleanly. Finally, if
+we received the result of the RPC, we print it out for the user and exit the
+loop.
+
+
##### Cancelling a Client-Side Streaming RPC
#### Cancellation on the Server Side