xref: /aosp_15_r20/external/grpc-grpc/examples/python/retry/README.md (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
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