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]


Reply via email to