| # Retry Example in gRPC Python | |
| ## Prerequisite | |
| * grpcio >= 1.39.0 | |
| * grpcio-tools >= 1.39.0 | |
| ## Running the example | |
| In terminal 1, start the flaky server: | |
| ```sh | |
| python3 flaky_server.py | |
| ``` | |
| In terminal 2, start the retry clients: | |
| ```sh | |
| python3 retry_client.py | |
| # Or | |
| python3 async_retry_client.py | |
| ``` | |
| ## Expect results | |
| The client RPC will succeed, even with server injecting multiple errors. Here is an example server log: | |
| ```sh | |
| $ python3 flaky_server.py | |
| INFO:root:Starting flaky server on [::]:50051 | |
| INFO:root:Injecting error to RPC from ipv6:[::1]:54471 | |
| INFO:root:Successfully responding to RPC from ipv6:[::1]:54473 | |
| INFO:root:Injecting error to RPC from ipv6:[::1]:54491 | |
| INFO:root:Injecting error to RPC from ipv6:[::1]:54581 | |
| INFO:root:Injecting error to RPC from ipv6:[::1]:54581 | |
| INFO:root:Injecting error to RPC from ipv6:[::1]:54581 | |
| INFO:root:Injecting error to RPC from ipv6:[::1]:54581 | |
| INFO:root:Successfully responding to RPC from ipv6:[::1]:54581 | |
| INFO:root:Injecting error to RPC from ipv6:[::1]:55474 | |
| INFO:root:Injecting error to RPC from ipv6:[::1]:55474 | |
| INFO:root:Injecting error to RPC from ipv6:[::1]:55474 | |
| INFO:root:Injecting error to RPC from ipv6:[::1]:55474 | |
| INFO:root:Successfully responding to RPC from ipv6:[::1]:55474 | |
| INFO:root:Injecting error to RPC from ipv6:[::1]:55533 | |
| INFO:root:Injecting error to RPC from ipv6:[::1]:55533 | |
| INFO:root:Injecting error to RPC from ipv6:[::1]:55533 | |
| INFO:root:Successfully responding to RPC from ipv6:[::1]:55533 | |
| ``` |