Compare commits
7 Commits
python-0.1
...
python-0.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f716fbb502 | ||
|
|
98fa248fff | ||
|
|
7c348dee0f | ||
|
|
bdeaadf33f | ||
|
|
a977bc97ab | ||
|
|
51face5593 | ||
|
|
a60a6f04b1 |
25
NEWS.md
25
NEWS.md
@@ -1,3 +1,28 @@
|
|||||||
|
November 29st, 2016
|
||||||
|
===================
|
||||||
|
* Version 0.20.0 of the server and version 0.12.0 of the python library
|
||||||
|
* Added integration with the new Mapzen isochrones functionality
|
||||||
|
|
||||||
|
November 25st, 2016
|
||||||
|
===================
|
||||||
|
* Version 0.19.0 of the server, version 0.11.0 of the python library and version 0.13.0 of the client
|
||||||
|
* functions to check the quota, both server and client
|
||||||
|
* removed the no_params from the templates (this caused trouble, not needed anymore)
|
||||||
|
* bug fixes: observatory quota, quotas as integers, mapzen geocoder soft limit as bool
|
||||||
|
|
||||||
|
November 21st, 2016
|
||||||
|
===================
|
||||||
|
* Version 0.18.1 of the server and version 0.12.1 of the client
|
||||||
|
* Add new fields to the obs_meta_geometry due to new changes introduced in the DO 1.1.2 release
|
||||||
|
|
||||||
|
November 11st, 2016
|
||||||
|
===================
|
||||||
|
* Version 0.18.0 of the server and version 0.12.0 of the client
|
||||||
|
* Added obs_legacybuildermetada functions to grab the needed metadata in the builder while making a data enrichment analysis. Closes #286
|
||||||
|
* Added metadata functions that will be used in the future to gather the metadata for the new data enrichment UI. Closes #287
|
||||||
|
* Fixed integration test for street geocoding
|
||||||
|
* Makefile now has a new task to create a new release in the client part, as was in the server, using make release NEW_VERSION=x.x.x
|
||||||
|
|
||||||
November 7st, 2016
|
November 7st, 2016
|
||||||
==================
|
==================
|
||||||
* Version 0.17.0 of the server and version 0.10.0 of the python package
|
* Version 0.17.0 of the server and version 0.10.0 of the python package
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
import json
|
import json
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
from requests.adapters import HTTPAdapter
|
||||||
from exceptions import *
|
from exceptions import *
|
||||||
from cartodb_services.metrics import Traceable
|
from cartodb_services.metrics import Traceable
|
||||||
|
|
||||||
@@ -17,6 +18,7 @@ class HereMapsGeocoder(Traceable):
|
|||||||
DEFAULT_GEN = 9
|
DEFAULT_GEN = 9
|
||||||
READ_TIMEOUT = 60
|
READ_TIMEOUT = 60
|
||||||
CONNECT_TIMEOUT = 10
|
CONNECT_TIMEOUT = 10
|
||||||
|
MAX_RETRIES=3
|
||||||
|
|
||||||
ADDRESS_PARAMS = [
|
ADDRESS_PARAMS = [
|
||||||
'city',
|
'city',
|
||||||
@@ -88,7 +90,10 @@ class HereMapsGeocoder(Traceable):
|
|||||||
'gen': self.gen
|
'gen': self.gen
|
||||||
}
|
}
|
||||||
request_params.update(params)
|
request_params.update(params)
|
||||||
response = requests.get(self.host, params=request_params,
|
# TODO Extract HTTP client wrapper
|
||||||
|
session = requests.Session()
|
||||||
|
session.mount(self.host, HTTPAdapter(self.MAX_RETRIES))
|
||||||
|
response = session.get(self.host, params=request_params,
|
||||||
timeout=(self.CONNECT_TIMEOUT, self.READ_TIMEOUT))
|
timeout=(self.CONNECT_TIMEOUT, self.READ_TIMEOUT))
|
||||||
self.add_response_data(response, self._logger)
|
self.add_response_data(response, self._logger)
|
||||||
if response.status_code == requests.codes.ok:
|
if response.status_code == requests.codes.ok:
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import requests
|
|||||||
import json
|
import json
|
||||||
|
|
||||||
from exceptions import WrongParams
|
from exceptions import WrongParams
|
||||||
|
from requests.adapters import HTTPAdapter
|
||||||
from cartodb_services.metrics import Traceable
|
from cartodb_services.metrics import Traceable
|
||||||
|
|
||||||
|
|
||||||
@@ -13,6 +14,7 @@ class HereMapsRoutingIsoline(Traceable):
|
|||||||
ISOLINE_PATH = '/routing/7.2/calculateisoline.json'
|
ISOLINE_PATH = '/routing/7.2/calculateisoline.json'
|
||||||
READ_TIMEOUT = 60
|
READ_TIMEOUT = 60
|
||||||
CONNECT_TIMEOUT = 10
|
CONNECT_TIMEOUT = 10
|
||||||
|
MAX_RETRIES = 3
|
||||||
|
|
||||||
ACCEPTED_MODES = {
|
ACCEPTED_MODES = {
|
||||||
"walk": "pedestrian",
|
"walk": "pedestrian",
|
||||||
@@ -53,6 +55,9 @@ class HereMapsRoutingIsoline(Traceable):
|
|||||||
data_range,
|
data_range,
|
||||||
range_type,
|
range_type,
|
||||||
parsed_options)
|
parsed_options)
|
||||||
|
# TODO Extract HTTP client wrapper
|
||||||
|
session = requests.Session()
|
||||||
|
session.mount(self._url, HTTPAdapter(self.MAX_RETRIES))
|
||||||
response = requests.get(self._url, params=request_params,
|
response = requests.get(self._url, params=request_params,
|
||||||
timeout=(self.CONNECT_TIMEOUT, self.READ_TIMEOUT))
|
timeout=(self.CONNECT_TIMEOUT, self.READ_TIMEOUT))
|
||||||
self.add_response_data(response, self._logger)
|
self.add_response_data(response, self._logger)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import requests
|
|||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
from requests.adapters import HTTPAdapter
|
||||||
from exceptions import WrongParams, MalformedResult, ServiceException
|
from exceptions import WrongParams, MalformedResult, ServiceException
|
||||||
from qps import qps_retry
|
from qps import qps_retry
|
||||||
from cartodb_services.tools import Coordinate, PolyLine
|
from cartodb_services.tools import Coordinate, PolyLine
|
||||||
@@ -14,6 +15,7 @@ class MapzenGeocoder(Traceable):
|
|||||||
BASE_URL = 'https://search.mapzen.com/v1/search'
|
BASE_URL = 'https://search.mapzen.com/v1/search'
|
||||||
READ_TIMEOUT = 60
|
READ_TIMEOUT = 60
|
||||||
CONNECT_TIMEOUT = 10
|
CONNECT_TIMEOUT = 10
|
||||||
|
MAX_RETRIES = 3
|
||||||
|
|
||||||
def __init__(self, app_key, logger, base_url=BASE_URL):
|
def __init__(self, app_key, logger, base_url=BASE_URL):
|
||||||
self._app_key = app_key
|
self._app_key = app_key
|
||||||
@@ -27,7 +29,10 @@ class MapzenGeocoder(Traceable):
|
|||||||
state_province,
|
state_province,
|
||||||
country, search_type)
|
country, search_type)
|
||||||
try:
|
try:
|
||||||
response = requests.get(self._url, params=request_params,
|
# TODO Extract HTTP client wrapper
|
||||||
|
session = requests.Session()
|
||||||
|
session.mount(self._url, HTTPAdapter(self.MAX_RETRIES))
|
||||||
|
response = session.get(self._url, params=request_params,
|
||||||
timeout=(self.CONNECT_TIMEOUT, self.READ_TIMEOUT))
|
timeout=(self.CONNECT_TIMEOUT, self.READ_TIMEOUT))
|
||||||
self.add_response_data(response, self._logger)
|
self.add_response_data(response, self._logger)
|
||||||
if response.status_code == requests.codes.ok:
|
if response.status_code == requests.codes.ok:
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import requests
|
|||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
from requests.adapters import HTTPAdapter
|
||||||
from exceptions import WrongParams, MalformedResult, ServiceException
|
from exceptions import WrongParams, MalformedResult, ServiceException
|
||||||
from qps import qps_retry
|
from qps import qps_retry
|
||||||
|
|
||||||
@@ -12,6 +13,7 @@ class MapzenIsochrones:
|
|||||||
BASE_URL = 'https://matrix.mapzen.com/isochrone'
|
BASE_URL = 'https://matrix.mapzen.com/isochrone'
|
||||||
READ_TIMEOUT = 60
|
READ_TIMEOUT = 60
|
||||||
CONNECT_TIMEOUT = 10
|
CONNECT_TIMEOUT = 10
|
||||||
|
MAX_RETRIES = 1
|
||||||
|
|
||||||
ACCEPTED_MODES = {
|
ACCEPTED_MODES = {
|
||||||
"walk": "pedestrian",
|
"walk": "pedestrian",
|
||||||
@@ -23,12 +25,15 @@ class MapzenIsochrones:
|
|||||||
self._url = base_url
|
self._url = base_url
|
||||||
self._logger = logger
|
self._logger = logger
|
||||||
|
|
||||||
@qps_retry
|
@qps_retry(qps=7)
|
||||||
def isochrone(self, locations, costing, ranges):
|
def isochrone(self, locations, costing, ranges):
|
||||||
request_params = self._parse_request_params(locations, costing,
|
request_params = self._parse_request_params(locations, costing,
|
||||||
ranges)
|
ranges)
|
||||||
try:
|
try:
|
||||||
response = requests.get(self._url, params=request_params,
|
# TODO Extract HTTP client wrapper
|
||||||
|
session = requests.Session()
|
||||||
|
session.mount(self._url, HTTPAdapter(self.MAX_RETRIES))
|
||||||
|
response = session.get(self._url, params=request_params,
|
||||||
timeout=(self.CONNECT_TIMEOUT,
|
timeout=(self.CONNECT_TIMEOUT,
|
||||||
self.READ_TIMEOUT))
|
self.READ_TIMEOUT))
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ class QPSService:
|
|||||||
|
|
||||||
def retry(self, first_request_time, retry_count):
|
def retry(self, first_request_time, retry_count):
|
||||||
elapsed = datetime.now() - first_request_time
|
elapsed = datetime.now() - first_request_time
|
||||||
if elapsed.microseconds > (self._retry_timeout * 1000.0):
|
if elapsed.microseconds > (self._retry_timeout * 1000.0 * 1000.0):
|
||||||
raise TimeoutException()
|
raise TimeoutException()
|
||||||
|
|
||||||
# inverse qps * (1.5 ^ i) is an increased sleep time of 1.5x per
|
# inverse qps * (1.5 ^ i) is an increased sleep time of 1.5x per
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import requests
|
|||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
from requests.adapters import HTTPAdapter
|
||||||
from exceptions import WrongParams, MalformedResult, ServiceException
|
from exceptions import WrongParams, MalformedResult, ServiceException
|
||||||
from qps import qps_retry
|
from qps import qps_retry
|
||||||
from cartodb_services.tools import Coordinate, PolyLine
|
from cartodb_services.tools import Coordinate, PolyLine
|
||||||
@@ -14,6 +15,7 @@ class MapzenRouting(Traceable):
|
|||||||
PRODUCTION_ROUTING_BASE_URL = 'https://valhalla.mapzen.com/route'
|
PRODUCTION_ROUTING_BASE_URL = 'https://valhalla.mapzen.com/route'
|
||||||
READ_TIMEOUT = 60
|
READ_TIMEOUT = 60
|
||||||
CONNECT_TIMEOUT = 10
|
CONNECT_TIMEOUT = 10
|
||||||
|
MAX_RETRIES=3
|
||||||
|
|
||||||
ACCEPTED_MODES = {
|
ACCEPTED_MODES = {
|
||||||
"walk": "pedestrian",
|
"walk": "pedestrian",
|
||||||
@@ -46,7 +48,10 @@ class MapzenRouting(Traceable):
|
|||||||
mode_param,
|
mode_param,
|
||||||
units)
|
units)
|
||||||
request_params = self.__parse_request_parameters(json_request_params)
|
request_params = self.__parse_request_parameters(json_request_params)
|
||||||
response = requests.get(self._url, params=request_params,
|
# TODO Extract HTTP client wrapper
|
||||||
|
session = requests.Session()
|
||||||
|
session.mount(self._url, HTTPAdapter(self.MAX_RETRIES))
|
||||||
|
response = session.get(self._url, params=request_params,
|
||||||
timeout=(self.CONNECT_TIMEOUT, self.READ_TIMEOUT))
|
timeout=(self.CONNECT_TIMEOUT, self.READ_TIMEOUT))
|
||||||
self.add_response_data(response, self._logger)
|
self.add_response_data(response, self._logger)
|
||||||
if response.status_code == requests.codes.ok:
|
if response.status_code == requests.codes.ok:
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ from setuptools import setup, find_packages
|
|||||||
setup(
|
setup(
|
||||||
name='cartodb_services',
|
name='cartodb_services',
|
||||||
|
|
||||||
version='0.12.0',
|
version='0.12.2',
|
||||||
|
|
||||||
description='CartoDB Services API Python Library',
|
description='CartoDB Services API Python Library',
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user