mirror of
https://github.com/github/octodns.git
synced 2024-05-11 05:55:00 +00:00
Add a delay to work around rackspace rate limiting.
This commit is contained in:
@@ -8,6 +8,7 @@ from requests import HTTPError, Session, post
|
||||
from collections import defaultdict
|
||||
import logging
|
||||
import string
|
||||
import time
|
||||
|
||||
from ..record import Create, Record
|
||||
from .base import BaseProvider
|
||||
@@ -71,6 +72,8 @@ class RackspaceProvider(BaseProvider):
|
||||
auth_token, dns_endpoint = self._get_auth_token(username, api_key)
|
||||
self.dns_endpoint = dns_endpoint
|
||||
|
||||
self.ratelimit_delay = kwargs.get('ratelimit_delay', 0)
|
||||
|
||||
sess = Session()
|
||||
sess.headers.update({'X-Auth-Token': auth_token})
|
||||
self._sess = sess
|
||||
@@ -88,6 +91,7 @@ class RackspaceProvider(BaseProvider):
|
||||
|
||||
def _get_zone_id_for(self, zone):
|
||||
ret = self._request('GET', 'domains', pagination_key='domains')
|
||||
time.sleep(self.ratelimit_delay)
|
||||
if ret:
|
||||
return [x for x in ret if x['name'] == zone.name[:-1]][0]['id']
|
||||
else:
|
||||
@@ -104,6 +108,7 @@ class RackspaceProvider(BaseProvider):
|
||||
|
||||
def _request_for_url(self, method, url, data):
|
||||
resp = self._sess.request(method, url, json=data, timeout=self.TIMEOUT)
|
||||
time.sleep(self.ratelimit_delay)
|
||||
self.log.debug('_request: status=%d', resp.status_code)
|
||||
resp.raise_for_status()
|
||||
return resp
|
||||
@@ -112,6 +117,7 @@ class RackspaceProvider(BaseProvider):
|
||||
acc = []
|
||||
|
||||
resp = self._sess.request(method, url, json=data, timeout=self.TIMEOUT)
|
||||
time.sleep(self.ratelimit_delay)
|
||||
self.log.debug('_request: status=%d', resp.status_code)
|
||||
resp.raise_for_status()
|
||||
acc.extend(resp.json()[pagination_key])
|
||||
|
||||
Reference in New Issue
Block a user