Skip to content

Commit 965e896

Browse files
author
wallisyan
committed
modify import; run the first test
1 parent 52f015c commit 965e896

19 files changed

+664
-473
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import logging
2+
3+
4+
class NullHandler(logging.Handler):
5+
def emit(self, record):
6+
pass
7+
8+
9+
logging.getLogger('alibabacloud').addHandler(NullHandler())

aliyun-python-sdk-core/alibabacloud/client.py

Lines changed: 52 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,27 @@
1414
import os
1515
import time
1616
from alibabacloud.handlers import RequestContext
17-
17+
from alibabacloud.handlers.prepare_handler import PrepareHandler
18+
from alibabacloud.handlers.signer_handler import SignerHandler
19+
from alibabacloud.handlers.url_handler import URLHandler
20+
from alibabacloud.handlers.http_header_handler import HttpHeaderHandler
21+
from alibabacloud.handlers.timeout_config_reader import TimeoutConfigReader
22+
from alibabacloud.handlers.endpoint_handler import EndpointHandler
23+
from alibabacloud.handlers.log_handler import LogHandler
24+
from alibabacloud.handlers.retry_handler import RetryHandler
25+
from alibabacloud.handlers.server_error_handler import ServerErrorHandler
26+
from alibabacloud.handlers.http_handler import HttpHandler
27+
from alibabacloud.credentials.credentials_provider import DefaultCredentialsProvider
28+
from alibabacloud.endpoint.default_endpoint_resolver import DefaultEndpointResolver
1829
DEFAULT_HANDLERS = [
1930
PrepareHandler,
2031
SignerHandler, # 获取Signature
2132
URLHandler, # 获取url
2233
HttpHeaderHandler, # 获取签名的header
23-
TimeoutHandler, # 获取timeout
34+
TimeoutConfigReader, # 获取timeout
2435
EndpointHandler, # 获取endpoint
2536
LogHandler,
26-
RetryHandler,
37+
# RetryHandler,
2738
ServerErrorHandler,
2839
HttpHandler
2940
]
@@ -66,51 +77,29 @@ def __init__(self, access_key_id=None, access_key_secret=None, region_id=None,
6677
self.read_timeout = read_timeout
6778
self.enable_http_debug = enable_http_debug
6879
# proxy provider两个: client env
69-
self.http_proxy = http_proxy
70-
self.https_proxy = https_proxy
71-
self._proxy = {
72-
'http': self.http_proxy,
73-
'https': self.https_proxy,
80+
# self.http_proxy = http_proxy
81+
# self.https_proxy = https_proxy
82+
self.proxy = {
83+
'http': http_proxy,
84+
'https': https_proxy,
7485
}
7586
self.enable_stream_logger = enable_stream_logger
7687
self.profile_name = profile_name
7788
self.config_file = config_file
7889

7990
def read_from_env(self):
8091
# 从环境变量读取一定量的数据
81-
env_vars = ['HTTP_DEBUG', 'HTTPS_PROXY', 'HTTP_PROXY']
82-
for item in env_vars:
83-
if getattr(self, item.lower()) is None:
84-
setattr(self, item.lower(), os.environ.get(item) or os.environ.get(item.lower()))
85-
86-
def _set_env_to_config(config_name, env_name):
87-
88-
env_value = os.environ.get(env_name)
89-
if env_value is not None:
90-
setattr(self, key, os.environ.get(env_value))
91-
92-
if config_name == 'enable_http_debug':
93-
# FIXME recursive calls will be indefinite
94-
_set_env_to_config(config_name, 'HTTP_DEBUG')
95-
_set_env_to_config(config_name, 'http_debug')
96-
elif config_name == 'https_proxy':
97-
_set_env_to_config(config_name, 'HTTPS_PROXY')
98-
_set_env_to_config(config_name, 'https_proxy')
99-
elif config_name == 'http_proxy':
100-
_set_env_to_config(config_name, 'HTTP_PROXY')
101-
_set_env_to_config(config_name, 'http_proxy')
102-
103-
for key in dir(self):
104-
# FIXME make sure we get only configuration members here, not functions & internal
105-
# variables
106-
if getattr(self, key) is None:
107-
env_name = 'ALIBABA_CLOUD_' + key.upper()
108-
_set_env_to_config(key, env_name)
92+
pass
93+
# env_vars = ['HTTP_DEBUG', 'HTTPS_PROXY', 'HTTP_PROXY']
94+
# for item in env_vars:
95+
# if getattr(self, item.lower()) is None:
96+
# setattr(self, item.lower(), os.environ.get(item) or os.environ.get(item.lower()))
10997

11098
def read_from_profile(self):
11199
# TODO read from profile
112100
from alibabacloud.utils.ini_helper import load_config
113101
profile = {}
102+
loaded_config = {}
114103
if self.config_file is None:
115104
if self.ENV_NAME_FOR_CONFIG_FILE in os.environ:
116105

@@ -119,25 +108,25 @@ def read_from_profile(self):
119108
# 默认配置不存在
120109
return None
121110
full_path = os.path.expanduser(env_config_file_path)
122-
self._loaded_config = load_config(full_path)
123-
profile = self._loaded_config.get(self.profile_name, {})
111+
loaded_config = load_config(full_path)
112+
profile = loaded_config.get(self.profile_name, {})
124113
else:
125114
potential_locations = self.DEFAULT_NAME_FOR_CONFIG_FILE
126115
for filename in potential_locations:
127116
try:
128-
self._loaded_config = load_config(filename)
117+
loaded_config = load_config(filename)
129118
break
130119
except Exception:
131120
continue
132-
profile = self._loaded_config.get(self.profile_name, {})
121+
profile = loaded_config.get(self.profile_name, {})
133122
else:
134123
profile = load_config(self.config_file)
135124

136125
for key in dir(self):
137126
if profile.get(key)is not None and getattr(self, key) is None:
138127
# 不存在config当中的值 pass
139128
setattr(self, key, profile.get(key))
140-
print('不存在config当中的值', key)
129+
# print('不存在config当中的值', key)
141130

142131
def read_from_default(self):
143132
# some config DEFAULT
@@ -156,36 +145,45 @@ class AlibabaCloudClient:
156145

157146
def __init__(self, client_config, credentials_provider=DefaultCredentialsProvider):
158147
self.config = get_merged_client_config(client_config)
159-
self.credentials_provider = credentials_provider
148+
self.credentials_provider = DefaultCredentialsProvider
160149
self.handlers = DEFAULT_HANDLERS
161150
self.logger = None # TODO initialize
162151
# endpoint_resolver阶段需要
163152
self.endpoint_resolver = DefaultEndpointResolver(self) # TODO initialize
164-
self.product_code = product_code
165-
self.location_service_code = location_service_code
166-
self.location_service_type = location_service_type
153+
self.product_code = None
154+
self.location_service_code = None
155+
self.location_service_type = None
156+
self.location_endpoint_type = None
167157

168158
def handle_request(self, api_request, request_handlers=None, context=None):
169159
# TODO handle different types of request
160+
self.product_code = api_request.get_product()
161+
self.location_service_code = api_request.get_location_service_code()
162+
self.location_endpoint_type = api_request.get_location_endpoint_type()
170163
if not context:
171164
context = RequestContext()
172165
context.api_request = api_request
173166
from .request import HTTPRequest
174167
context.http_request = HTTPRequest()
175168
context.config = self.config
169+
context.credentials_provider = self.credentials_provider
170+
context.product_code = self.product_code
171+
context.location_service_code = self.location_service_code
172+
context.location_endpoint_type = self.location_endpoint_type
173+
context.endpoint_resolver = self.endpoint_resolver
176174

177175
if not request_handlers:
178176
request_handlers = self.handlers
179177

180178
for i in range(len(request_handlers)):
181-
request_handlers[i].handle_request(context)
179+
request_handlers[i]().handle_request(context)
182180

183181
for i in reversed(range(len(request_handlers))):
184-
request_handlers[i].handle_response(context)
185-
if context.retry_flag:
186-
time.sleep(context.retry_backoff)
187-
self.handle_request(api_request,
188-
request_handlers=request_handlers[i:],
189-
context=context)
190-
191-
return context.result
182+
request_handlers[i]().handle_response(context)
183+
# if context.retry_flag:
184+
# time.sleep(context.retry_backoff)
185+
# self.handle_request(api_request,
186+
# request_handlers=request_handlers[i:],
187+
# context=context)
188+
189+
return context.response.text

0 commit comments

Comments
 (0)