Merge pull request #523 from CartoDB/qps_fix_tomtom

Qps fix tomtom
This commit is contained in:
Mario de Frutos
2018-10-03 17:33:07 +02:00
committed by GitHub
3 changed files with 13 additions and 14 deletions

View File

@@ -64,7 +64,7 @@ class TomTomIsolines():
return self._parse_coordinates(reachable_range[ENTRY_BOUNDARY])
@qps_retry(qps=5)
@qps_retry(qps=5, provider='tomtom')
def _calculate_isoline(self, origin, time_range,
profile=DEFAULT_PROFILE,
date_time=DEFAULT_DEPARTAT):

View File

@@ -18,15 +18,10 @@ def qps_retry(original_function=None, **options):
"""
if original_function is not None:
def wrapped_function(*args, **kwargs):
if 'timeout' in options:
timeout = options['timeout']
else:
timeout = DEFAULT_RETRY_TIMEOUT
if 'qps' in options:
qps = options['qps']
else:
qps = DEFAULT_QUERIES_PER_SECOND
return QPSService(retry_timeout=timeout, queries_per_second=qps).call(original_function, *args, **kwargs)
timeout = options.get('timeout', DEFAULT_RETRY_TIMEOUT)
qps = options.get('qps', DEFAULT_QUERIES_PER_SECOND)
provider = options.get('provider', None)
return QPSService(retry_timeout=timeout, queries_per_second=qps, provider=provider).call(original_function, *args, **kwargs)
return wrapped_function
else:
def partial_wrapper(func):
@@ -36,9 +31,10 @@ def qps_retry(original_function=None, **options):
class QPSService:
def __init__(self, queries_per_second, retry_timeout):
def __init__(self, queries_per_second, retry_timeout, provider):
self._queries_per_second = queries_per_second
self._retry_timeout = retry_timeout
self._provider = provider
def call(self, fn, *args, **kwargs):
start_time = datetime.now()
@@ -48,8 +44,11 @@ class QPSService:
return fn(*args, **kwargs)
except Exception as e:
response = getattr(e, 'response', None)
if response is not None and (response.status_code == 429):
self.retry(start_time, attempt_number)
if response is not None:
if self._provider is not None and self._provider == 'tomtom' and (response.status_code == 403):
self.retry(start_time, attempt_number)
elif response.status_code == 429:
self.retry(start_time, attempt_number)
else:
raise e
attempt_number += 1

View File

@@ -10,7 +10,7 @@ from setuptools import setup, find_packages
setup(
name='cartodb_services',
version='0.20.0',
version='0.20.1',
description='CartoDB Services API Python Library',