From f86ed65e0e62a18e3524cedfe9b2b93dab2a275e Mon Sep 17 00:00:00 2001 From: Nicolas Orlando Nappe Date: Tue, 11 Jul 2017 12:31:46 -0300 Subject: [PATCH] Added an option to use reusable connections, but the default behaviour is not changed. It creates a request.Session object at initialization time and uses it for future requests. --- watson_developer_cloud/__init__.py | 0 watson_developer_cloud/authorization_v1.py | 3 +-- watson_developer_cloud/discovery_v1.py | 4 ++-- .../natural_language_classifier_v1.py | 3 +-- .../natural_language_understanding_v1.py | 15 +++++---------- .../personality_insights_v3.py | 0 .../retrieve_and_rank_v1.py | 3 +-- watson_developer_cloud/tone_analyzer_v3.py | 0 .../tradeoff_analytics_v1.py | 0 .../watson_developer_cloud_service.py | 19 +++++++++++++------ 10 files changed, 23 insertions(+), 24 deletions(-) mode change 100755 => 100644 watson_developer_cloud/__init__.py mode change 100755 => 100644 watson_developer_cloud/personality_insights_v3.py mode change 100755 => 100644 watson_developer_cloud/tone_analyzer_v3.py mode change 100755 => 100644 watson_developer_cloud/tradeoff_analytics_v1.py mode change 100755 => 100644 watson_developer_cloud/watson_developer_cloud_service.py diff --git a/watson_developer_cloud/__init__.py b/watson_developer_cloud/__init__.py old mode 100755 new mode 100644 diff --git a/watson_developer_cloud/authorization_v1.py b/watson_developer_cloud/authorization_v1.py index 8c02b3ce4..40008bcf5 100644 --- a/watson_developer_cloud/authorization_v1.py +++ b/watson_developer_cloud/authorization_v1.py @@ -17,8 +17,7 @@ retrieve a temporary access token """ -from watson_developer_cloud.watson_developer_cloud_service import \ - WatsonDeveloperCloudService +from .watson_developer_cloud_service import WatsonDeveloperCloudService try: import urllib.parse as urlparse # Python 3 diff --git a/watson_developer_cloud/discovery_v1.py b/watson_developer_cloud/discovery_v1.py index b8d2fb553..78e1af72a 100644 --- a/watson_developer_cloud/discovery_v1.py +++ b/watson_developer_cloud/discovery_v1.py @@ -28,7 +28,7 @@ class DiscoveryV1(WatsonDeveloperCloudService): """Client for Discovery service""" def __init__(self, version, url=default_url, username=None, password=None, - use_vcap_services=True): + use_vcap_services=True, **kwargs): """ Construct an instance. Fetches service parameters from VCAP_SERVICES runtime variable for Bluemix, or it defaults to local URLs. @@ -37,7 +37,7 @@ def __init__(self, version, url=default_url, username=None, password=None, """ WatsonDeveloperCloudService.__init__( - self, 'discovery', url, username, password, use_vcap_services) + self, 'discovery', url, username, password, use_vcap_services, **kwargs) self.version = version def get_environments(self): diff --git a/watson_developer_cloud/natural_language_classifier_v1.py b/watson_developer_cloud/natural_language_classifier_v1.py index 3f7b8766f..6786a0f8a 100644 --- a/watson_developer_cloud/natural_language_classifier_v1.py +++ b/watson_developer_cloud/natural_language_classifier_v1.py @@ -18,8 +18,7 @@ """ import json -from watson_developer_cloud.watson_developer_cloud_service import \ - WatsonDeveloperCloudService +from .watson_developer_cloud_service import WatsonDeveloperCloudService class NaturalLanguageClassifierV1(WatsonDeveloperCloudService): diff --git a/watson_developer_cloud/natural_language_understanding_v1.py b/watson_developer_cloud/natural_language_understanding_v1.py index 0d4c0b9e5..f403d3ac4 100644 --- a/watson_developer_cloud/natural_language_understanding_v1.py +++ b/watson_developer_cloud/natural_language_understanding_v1.py @@ -12,9 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from watson_developer_cloud.watson_developer_cloud_service import \ - WatsonDeveloperCloudService - +from .watson_developer_cloud_service import WatsonDeveloperCloudService class NaturalLanguageUnderstandingV1(WatsonDeveloperCloudService): """ @@ -26,15 +24,12 @@ class NaturalLanguageUnderstandingV1(WatsonDeveloperCloudService): default_url = '{0}/natural-language-understanding/api'.format(base_url) latest_version = '2017-02-27' - def __init__(self, - version, - url=default_url, - username=None, - password=None, - use_vcap_services=True): + def __init__(self, version, url=default_url, + username=None, password=None, + use_vcap_services=True, **kwargs): WatsonDeveloperCloudService.__init__( self, 'natural-language-understanding', url, - username, password, use_vcap_services) + username, password, use_vcap_services, **kwargs) self.version = version def analyze(self, features, text=None, url=None, html=None, diff --git a/watson_developer_cloud/personality_insights_v3.py b/watson_developer_cloud/personality_insights_v3.py old mode 100755 new mode 100644 diff --git a/watson_developer_cloud/retrieve_and_rank_v1.py b/watson_developer_cloud/retrieve_and_rank_v1.py index 11aaa38f5..1c95ca8a5 100644 --- a/watson_developer_cloud/retrieve_and_rank_v1.py +++ b/watson_developer_cloud/retrieve_and_rank_v1.py @@ -19,8 +19,7 @@ import json import pysolr -from watson_developer_cloud.watson_developer_cloud_service import \ - WatsonDeveloperCloudService +from .watson_developer_cloud_service import WatsonDeveloperCloudService class RetrieveAndRankV1(WatsonDeveloperCloudService): diff --git a/watson_developer_cloud/tone_analyzer_v3.py b/watson_developer_cloud/tone_analyzer_v3.py old mode 100755 new mode 100644 diff --git a/watson_developer_cloud/tradeoff_analytics_v1.py b/watson_developer_cloud/tradeoff_analytics_v1.py old mode 100755 new mode 100644 diff --git a/watson_developer_cloud/watson_developer_cloud_service.py b/watson_developer_cloud/watson_developer_cloud_service.py old mode 100755 new mode 100644 index 3b4522c1f..3eaa2fb0d --- a/watson_developer_cloud/watson_developer_cloud_service.py +++ b/watson_developer_cloud/watson_developer_cloud_service.py @@ -86,7 +86,7 @@ def _convert_boolean_values(dictionary): class WatsonDeveloperCloudService(object): def __init__(self, vcap_services_name, url, username=None, password=None, use_vcap_services=True, api_key=None, - x_watson_learning_opt_out=False): + x_watson_learning_opt_out=False, use_connection_pool=False): """ Loads credentials from the VCAP_SERVICES environment variable if available, preferring credentials explicitly @@ -101,6 +101,8 @@ def __init__(self, vcap_services_name, url, username=None, password=None, self.api_key = None self.username = None self.password = None + self.request_obj = None + self.use_connection_pool = use_connection_pool self.x_watson_learning_opt_out = x_watson_learning_opt_out if api_key is not None: @@ -133,6 +135,11 @@ def __init__(self, vcap_services_name, url, username=None, password=None, 'credentials ' + '(Note: these are different from your Bluemix id)') + if use_connection_pool: + self.request_obj = requests.Session() + else: + self.request_obj = requests + def set_username_and_password(self, username=None, password=None): if username == 'YOUR SERVICE USERNAME': username = None @@ -295,11 +302,11 @@ def request(self, method, url, accept_json=False, headers=None, if self.x_watson_learning_opt_out: headers['x-watson-learning-opt-out'] = 'true' - response = requests.request(method=method, url=full_url, - cookies=self.jar, auth=auth, - headers=headers, - params=params, data=data, files=files, - **kwargs) + response = self.request_obj.request(method=method, url=full_url, + cookies=self.jar, auth=auth, + headers=headers, + params=params, data=data, files=files, + **kwargs) if 200 <= response.status_code <= 299: if accept_json: