| # 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 |
| ``` |