@@ -63,38 +63,6 @@ class RetryStrategy(Protocol):
63
63
...
64
64
```
65
65
66
- A request using a ` RetryStrategy ` would look something like the following
67
- example:
68
-
69
- ``` python
70
- try :
71
- retry_token = retry_strategy.acquire_initial_retry_token()
72
- except RetryError:
73
- transpoort_response = transport_client.send(serialized_request)
74
- return self ._deserialize(transport_response)
75
-
76
- while True :
77
- await asyncio.sleep(retry_token.retry_delay)
78
- try :
79
- transpoort_response = transport_client.send(serialized_request)
80
- response = self ._deserialize(transport_response)
81
- except Exception as e:
82
- response = e
83
-
84
- if isinstance (response, Exception ):
85
- try :
86
- retry_token = retry_strategy.refresh_retry_token_for_retry(
87
- token_to_renew = retry_token,
88
- error = e
89
- )
90
- continue
91
- except RetryError retry_error:
92
- raise retry_error from e
93
-
94
- retry_strategy.record_success(token = retry_token)
95
- return response
96
- ```
97
-
98
66
### Error Classification
99
67
100
68
Different types of exceptions may require different amounts of delay or may not
@@ -168,3 +136,37 @@ example, a `BackoffStrategy` could use a token bucket to limit retries
168
136
client-wide so that the client can limit the amount of load it is placing on the
169
137
server. Decoupling this logic from the straightforward math of delay computation
170
138
allows both components to be evolved separately.
139
+
140
+ ## Example Usage
141
+
142
+ A request using a ` RetryStrategy ` would look something like the following
143
+ example:
144
+
145
+ ``` python
146
+ try :
147
+ retry_token = retry_strategy.acquire_initial_retry_token()
148
+ except RetryError:
149
+ transport_response = transport_client.send(serialized_request)
150
+ return self ._deserialize(transport_response)
151
+
152
+ while True :
153
+ await asyncio.sleep(retry_token.retry_delay)
154
+ try :
155
+ transport_response = transport_client.send(serialized_request)
156
+ response = self ._deserialize(transport_response)
157
+ except Exception as e:
158
+ response = e
159
+
160
+ if isinstance (response, Exception ):
161
+ try :
162
+ retry_token = retry_strategy.refresh_retry_token_for_retry(
163
+ token_to_renew = retry_token,
164
+ error = e
165
+ )
166
+ continue
167
+ except RetryError as retry_error:
168
+ raise retry_error from e
169
+
170
+ retry_strategy.record_success(token = retry_token)
171
+ return response
172
+ ```
0 commit comments