1*cc02d7e2SAndroid Build Coastguard Worker# Retry Example in gRPC Python 2*cc02d7e2SAndroid Build Coastguard Worker 3*cc02d7e2SAndroid Build Coastguard Worker## Prerequisite 4*cc02d7e2SAndroid Build Coastguard Worker 5*cc02d7e2SAndroid Build Coastguard Worker* grpcio >= 1.39.0 6*cc02d7e2SAndroid Build Coastguard Worker* grpcio-tools >= 1.39.0 7*cc02d7e2SAndroid Build Coastguard Worker 8*cc02d7e2SAndroid Build Coastguard Worker## Running the example 9*cc02d7e2SAndroid Build Coastguard Worker 10*cc02d7e2SAndroid Build Coastguard WorkerIn terminal 1, start the flaky server: 11*cc02d7e2SAndroid Build Coastguard Worker 12*cc02d7e2SAndroid Build Coastguard Worker```sh 13*cc02d7e2SAndroid Build Coastguard Workerpython3 flaky_server.py 14*cc02d7e2SAndroid Build Coastguard Worker``` 15*cc02d7e2SAndroid Build Coastguard Worker 16*cc02d7e2SAndroid Build Coastguard WorkerIn terminal 2, start the retry clients: 17*cc02d7e2SAndroid Build Coastguard Worker 18*cc02d7e2SAndroid Build Coastguard Worker```sh 19*cc02d7e2SAndroid Build Coastguard Workerpython3 retry_client.py 20*cc02d7e2SAndroid Build Coastguard Worker# Or 21*cc02d7e2SAndroid Build Coastguard Workerpython3 async_retry_client.py 22*cc02d7e2SAndroid Build Coastguard Worker``` 23*cc02d7e2SAndroid Build Coastguard Worker 24*cc02d7e2SAndroid Build Coastguard Worker## Expect results 25*cc02d7e2SAndroid Build Coastguard Worker 26*cc02d7e2SAndroid Build Coastguard WorkerThe client RPC will succeed, even with server injecting multiple errors. Here is an example server log: 27*cc02d7e2SAndroid Build Coastguard Worker 28*cc02d7e2SAndroid Build Coastguard Worker```sh 29*cc02d7e2SAndroid Build Coastguard Worker$ python3 flaky_server.py 30*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Starting flaky server on [::]:50051 31*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Injecting error to RPC from ipv6:[::1]:54471 32*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Successfully responding to RPC from ipv6:[::1]:54473 33*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Injecting error to RPC from ipv6:[::1]:54491 34*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Injecting error to RPC from ipv6:[::1]:54581 35*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Injecting error to RPC from ipv6:[::1]:54581 36*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Injecting error to RPC from ipv6:[::1]:54581 37*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Injecting error to RPC from ipv6:[::1]:54581 38*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Successfully responding to RPC from ipv6:[::1]:54581 39*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Injecting error to RPC from ipv6:[::1]:55474 40*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Injecting error to RPC from ipv6:[::1]:55474 41*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Injecting error to RPC from ipv6:[::1]:55474 42*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Injecting error to RPC from ipv6:[::1]:55474 43*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Successfully responding to RPC from ipv6:[::1]:55474 44*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Injecting error to RPC from ipv6:[::1]:55533 45*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Injecting error to RPC from ipv6:[::1]:55533 46*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Injecting error to RPC from ipv6:[::1]:55533 47*cc02d7e2SAndroid Build Coastguard WorkerINFO:root:Successfully responding to RPC from ipv6:[::1]:55533 48*cc02d7e2SAndroid Build Coastguard Worker``` 49