Compare commits
5 Commits
python-0.7
...
python-0.7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d602c42559 | ||
|
|
d88763f889 | ||
|
|
c86496478a | ||
|
|
1851b2b716 | ||
|
|
3cc4e06420 |
27
NEWS.md
27
NEWS.md
@@ -1,3 +1,30 @@
|
|||||||
|
August 19, 2016
|
||||||
|
===========
|
||||||
|
* Released version 0.7.4.2 of the server python library
|
||||||
|
* Now connection errors, that intermittently come from Mapzen geocoding service, are caught and treated
|
||||||
|
* Added more information to the logs from response
|
||||||
|
* Fixed some errors in the QPS manager when the response object is None
|
||||||
|
|
||||||
|
August 11, 2016
|
||||||
|
===========
|
||||||
|
* Released server version 0.14.2
|
||||||
|
* Released client version 0.10.2
|
||||||
|
* Always default arguments for DO functions to NULL, which prevents duplication & overwrite
|
||||||
|
|
||||||
|
August 5, 2016
|
||||||
|
===========
|
||||||
|
* Released server version 0.14.1
|
||||||
|
* Fix problem with calling a logger method that doesn't exists
|
||||||
|
|
||||||
|
August 3, 2016
|
||||||
|
===========
|
||||||
|
* Released server version 0.14
|
||||||
|
* New logger with: plpy, rollbar integration and file
|
||||||
|
* Added min log level to notify as config option
|
||||||
|
* Server config to define dataservices environment for: log, third party servers, etc
|
||||||
|
* Added logger to the SQL functions
|
||||||
|
* Raise exception on events that should not be logged like reach the quota limit
|
||||||
|
|
||||||
July 28, 2016
|
July 28, 2016
|
||||||
===========
|
===========
|
||||||
* Release server 0.13.3.1
|
* Release server 0.13.3.1
|
||||||
|
|||||||
@@ -57,9 +57,14 @@ class HereMapsRoutingIsoline:
|
|||||||
return []
|
return []
|
||||||
else:
|
else:
|
||||||
self._logger.error('Error trying to calculate HERE isolines',
|
self._logger.error('Error trying to calculate HERE isolines',
|
||||||
data={"response": response.json(), "source":
|
data={"response_status": response.status_code,
|
||||||
source, "mode": mode, "data_range":
|
"response_reason": response.reason,
|
||||||
data_range, "range_type": range_type,
|
"response_content": response.text,
|
||||||
|
"reponse_url": response.url,
|
||||||
|
"response_headers": response.headers,
|
||||||
|
"source": source, "mode": mode,
|
||||||
|
"data_range": data_range,
|
||||||
|
"range_type": range_type,
|
||||||
"options": options})
|
"options": options})
|
||||||
raise Exception('Error trying to calculate HERE isolines')
|
raise Exception('Error trying to calculate HERE isolines')
|
||||||
|
|
||||||
|
|||||||
@@ -19,19 +19,39 @@ class MapzenGeocoder:
|
|||||||
|
|
||||||
@qps_retry
|
@qps_retry
|
||||||
def geocode(self, searchtext, city=None, state_province=None, country=None):
|
def geocode(self, searchtext, city=None, state_province=None, country=None):
|
||||||
request_params = self._build_requests_parameters(searchtext, city, state_province, country)
|
request_params = self._build_requests_parameters(searchtext, city,
|
||||||
response = requests.get(self._url, params=request_params)
|
state_province,
|
||||||
if response.status_code == requests.codes.ok:
|
country)
|
||||||
return self.__parse_response(response.text)
|
try:
|
||||||
elif response.status_code == requests.codes.bad_request:
|
response = requests.get(self._url, params=request_params)
|
||||||
|
if response.status_code == requests.codes.ok:
|
||||||
|
return self.__parse_response(response.text)
|
||||||
|
elif response.status_code == requests.codes.bad_request:
|
||||||
|
return []
|
||||||
|
else:
|
||||||
|
self._logger.error('Error trying to geocode using mapzen',
|
||||||
|
data={"response_status": response.status_code,
|
||||||
|
"response_reason": response.reason,
|
||||||
|
"response_content": response.text,
|
||||||
|
"reponse_url": response.url,
|
||||||
|
"response_headers": response.headers,
|
||||||
|
"searchtext": searchtext,
|
||||||
|
"city": city, "country": country,
|
||||||
|
"state_province": state_province })
|
||||||
|
raise Exception('Error trying to geocode {0} using mapzen'.format(searchtext))
|
||||||
|
except requests.ConnectionError as e:
|
||||||
|
# Don't raise the exception to continue with the geocoding job
|
||||||
|
self._logger.error('Error connecting to Mapzen geocoding server',
|
||||||
|
exception=e)
|
||||||
return []
|
return []
|
||||||
else:
|
|
||||||
raise Exception('Error trying to geocode {0} using mapzen'.format(searchtext))
|
|
||||||
|
|
||||||
def _build_requests_parameters(self, searchtext, city=None,
|
def _build_requests_parameters(self, searchtext, city=None,
|
||||||
state_province=None, country=None):
|
state_province=None, country=None):
|
||||||
request_params = {}
|
request_params = {}
|
||||||
search_string = self._build_search_text(searchtext, city, state_province)
|
search_string = self._build_search_text(searchtext.strip(),
|
||||||
|
city,
|
||||||
|
state_province)
|
||||||
request_params['text'] = search_string
|
request_params['text'] = search_string
|
||||||
request_params['layers'] = 'address'
|
request_params['layers'] = 'address'
|
||||||
request_params['api_key'] = self._app_key
|
request_params['api_key'] = self._app_key
|
||||||
|
|||||||
@@ -44,8 +44,13 @@ class MatrixClient:
|
|||||||
|
|
||||||
if not requests.codes.ok:
|
if not requests.codes.ok:
|
||||||
self._logger.error('Error trying to get matrix distance from mapzen',
|
self._logger.error('Error trying to get matrix distance from mapzen',
|
||||||
data={"response": response, "locations":
|
data={"response_status": response.status_code,
|
||||||
locations, "costing": costing})
|
"response_reason": response.reason,
|
||||||
|
"response_content": response.text,
|
||||||
|
"reponse_url": response.url,
|
||||||
|
"response_headers": response.headers,
|
||||||
|
"locations": locations,
|
||||||
|
"costing": costing})
|
||||||
raise Exception('Error trying to get matrix distance from mapzen')
|
raise Exception('Error trying to get matrix distance from mapzen')
|
||||||
|
|
||||||
return response.json()
|
return response.json()
|
||||||
|
|||||||
@@ -26,7 +26,8 @@ class QPSService:
|
|||||||
try:
|
try:
|
||||||
return fn(*args, **kwargs)
|
return fn(*args, **kwargs)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if hasattr(e, 'response') and (e.response.status_code == 429):
|
response = getattr(e, 'response', None)
|
||||||
|
if response and (response.status_code == 429):
|
||||||
self.retry(start_time, attempt_number)
|
self.retry(start_time, attempt_number)
|
||||||
else:
|
else:
|
||||||
raise e
|
raise e
|
||||||
|
|||||||
@@ -49,11 +49,15 @@ class MapzenRouting:
|
|||||||
elif response.status_code == requests.codes.bad_request:
|
elif response.status_code == requests.codes.bad_request:
|
||||||
return MapzenRoutingResponse(None, None, None)
|
return MapzenRoutingResponse(None, None, None)
|
||||||
else:
|
else:
|
||||||
self._logger.error('Error trying to calculate route using HERE',
|
self._logger.error('Error trying to calculate route using Mapzen',
|
||||||
data={"response": response.json(), "waypoints":
|
data={"response_status": response.status_code,
|
||||||
waypoints, "mode": mode, "options":
|
"response_reason": response.reason,
|
||||||
options})
|
"response_content": response.text,
|
||||||
raise Exception('Error trying to calculate route using HERE')
|
"reponse_url": response.url,
|
||||||
|
"response_headers": response.headers,
|
||||||
|
"waypoints": waypoints, "mode": mode,
|
||||||
|
"options": options})
|
||||||
|
raise Exception('Error trying to calculate route using Mapzen')
|
||||||
|
|
||||||
def __parse_options(self, options):
|
def __parse_options(self, options):
|
||||||
return dict(option.split('=') for option in options)
|
return dict(option.split('=') for option in options)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ from setuptools import setup, find_packages
|
|||||||
setup(
|
setup(
|
||||||
name='cartodb_services',
|
name='cartodb_services',
|
||||||
|
|
||||||
version='0.7.4.1',
|
version='0.7.4.2',
|
||||||
|
|
||||||
description='CartoDB Services API Python Library',
|
description='CartoDB Services API Python Library',
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user