dimgal1 opened a new issue #1577:
URL: https://github.com/apache/libcloud/issues/1577
## Summary
Enabling retry logic does not work for rate limit exceeded responses.
## Detailed Information
retry decorator expects a `RateLimitExceeded` error to be raised, though
`session.request` method does not raise an exception if a response is returned
by the server no matter the status code.
I've tested it on azure_arm driver by setting `RETRY_FAILED_HTTP_REQUESTS`
to True and trying:
```python
while True:
nodes = driver.list_nodes()
print(nodes)
```
Hitting the throttling limit results in:
```python
Traceback (most recent call last):
File "test.py", line 23, in <module>
nodes = driver.list_nodes()
File "/home/dimgal/libcloud/libcloud/compute/drivers/azure_arm.py", line
395, in list_nodes
r = self.connection.request(action,
File "/home/dimgal/libcloud/libcloud/common/azure_arm.py", line 227, in
request
return super(AzureResourceManagementConnection, self) \
File "/home/dimgal/libcloud/libcloud/common/base.py", line 655, in request
response = responseCls(**kwargs)
File "/home/dimgal/libcloud/libcloud/common/base.py", line 165, in __init__
raise exception_from_message(code=self.status,
libcloud.common.exceptions.RateLimitReachedError: 429 Rate limit exceeded
```
urllib3 supports
[retries](https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html#urllib3.util.Retry)
based on HTTP status codes, maybe use this? Let me know how you think this
should be handled
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]