1
0
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:
Terrence Cole
2017-07-20 15:50:57 -07:00
parent bb4d1c82b1
commit 4707b4654e

View File

@@ -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])