Browse Source

Add a delay to work around rackspace rate limiting.

pull/165/head
Terrence Cole 9 years ago
parent
commit
4707b4654e
1 changed files with 6 additions and 0 deletions
  1. +6
    -0
      octodns/provider/rackspace.py

+ 6
- 0
octodns/provider/rackspace.py 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])


Loading…
Cancel
Save