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
@@ -64,7 +64,7 @@ class TomTomIsolines():
return self._parse_coordinates(reachable_range[ENTRY_BOUNDARY]) 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, def _calculate_isoline(self, origin, time_range,
profile=DEFAULT_PROFILE, profile=DEFAULT_PROFILE,
date_time=DEFAULT_DEPARTAT): date_time=DEFAULT_DEPARTAT):
@@ -18,15 +18,10 @@ def qps_retry(original_function=None, **options):
""" """
if original_function is not None: if original_function is not None:
def wrapped_function(*args, **kwargs): def wrapped_function(*args, **kwargs):
if 'timeout' in options: timeout = options.get('timeout', DEFAULT_RETRY_TIMEOUT)
timeout = options['timeout'] qps = options.get('qps', DEFAULT_QUERIES_PER_SECOND)
else: provider = options.get('provider', None)
timeout = DEFAULT_RETRY_TIMEOUT return QPSService(retry_timeout=timeout, queries_per_second=qps, provider=provider).call(original_function, *args, **kwargs)
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)
return wrapped_function return wrapped_function
else: else:
def partial_wrapper(func): def partial_wrapper(func):
@@ -36,9 +31,10 @@ def qps_retry(original_function=None, **options):
class QPSService: 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._queries_per_second = queries_per_second
self._retry_timeout = retry_timeout self._retry_timeout = retry_timeout
self._provider = provider
def call(self, fn, *args, **kwargs): def call(self, fn, *args, **kwargs):
start_time = datetime.now() start_time = datetime.now()
@@ -48,8 +44,11 @@ class QPSService:
return fn(*args, **kwargs) return fn(*args, **kwargs)
except Exception as e: except Exception as e:
response = getattr(e, 'response', None) response = getattr(e, 'response', None)
if response is not None and (response.status_code == 429): if response is not None:
self.retry(start_time, attempt_number) 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: else:
raise e raise e
attempt_number += 1 attempt_number += 1
+1 -1
View File
@@ -10,7 +10,7 @@ from setuptools import setup, find_packages
setup( setup(
name='cartodb_services', name='cartodb_services',
version='0.20.0', version='0.20.1',
description='CartoDB Services API Python Library', description='CartoDB Services API Python Library',