Skip to content

Commit f6ae57b

Browse files
committed
upload 3.19.5.1
1 parent 5c04ae5 commit f6ae57b

14 files changed

+39
-523
lines changed

Help on License

Lines changed: 0 additions & 35 deletions
This file was deleted.

examples/bucket_operations_sample.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,9 @@ def doBucketQuotaOperation():
6161
# resp = obsClient.getBucketQuota(bucketName)
6262
resp = bucketClient.getBucketQuota()
6363

64-
print('Getting bucket quota ' + str(resp.body) + ' \n')
64+
print('Getting bucket quota ' + str(resp.body) + ' \n')
6565

66+
6667
def doBucketVersioningOperation():
6768
# print('Getting bucket versioning config ' + str(obsClient.getBucketVersioning(bucketName).body) + ' \n')
6869
print('Getting bucket versioning config ' + str(bucketClient.getBucketVersioning().body) + ' \n')

examples/obs_python_sample.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
bucketName = 'my-obs-bucket-demo'
2121

2222
# create ObsClient instance
23-
obsClient = ObsClient(access_key_id=AK, secret_access_key=SK, server='http://yweywyeewoi')
23+
obsClient = ObsClient(access_key_id=AK, secret_access_key=SK, server=server)
2424
bucketClient = obsClient.bucketClient(bucketName)
2525

2626
# init log
100 KB
Binary file not shown.

src/obs/cache.py

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -39,35 +39,5 @@ def set(self, key, value):
3939
self.weak[key] = strongRef = self.Dict(value)
4040
self.strong.append(strongRef)
4141

42-
class _LocalCacheProcess(object):
43-
44-
def __init__(self, maxlen=10):
45-
import multiprocessing, atexit
46-
self._mgr = multiprocessing.Manager()
47-
self.weak = self._mgr.dict()
48-
atexit.register(self.close)
49-
50-
@staticmethod
51-
def nowTime():
52-
return int(time.time())
53-
54-
def get(self, key):
55-
value = self.weak.get(key)
56-
if value is not None and hasattr(value, 'expire') and self.nowTime() > value['expire']:
57-
del self.weak[key]
58-
value = None
59-
return value
60-
61-
def set(self, key, value):
62-
self.weak[key] = value
63-
64-
def close(self):
65-
if self._mgr:
66-
try:
67-
self._mgr.shutdown()
68-
self._mgr = None
69-
except:
70-
pass
71-
7242

7343
LocalCache = _LocalCacheThread

src/obs/client.py

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,8 @@ def __init__(self, access_key_id, secret_access_key, is_secure=True, server=None
171171
port=None, max_retry_count=3, timeout=60, chunk_size=65536,
172172
long_conn_mode=False, proxy_host=None, proxy_port=None,
173173
proxy_username=None, proxy_password=None, security_token=None,
174-
custom_ciphers=None, use_http2=False, is_signature_negotiation=True, is_cname=False):
174+
custom_ciphers=None, use_http2=False, is_signature_negotiation=True, is_cname=False,
175+
max_redirect_count=10):
175176
self.securityProvider = _SecurityProvider(access_key_id, secret_access_key, security_token)
176177
server = server if server is not None else ''
177178
server = util.to_string(util.safe_encode(server))
@@ -212,6 +213,7 @@ def __init__(self, access_key_id, secret_access_key, is_secure=True, server=None
212213
self.use_http2 = use_http2
213214
self.is_signature_negotiation = is_signature_negotiation
214215
self.is_cname = is_cname
216+
self.max_redirect_count = max_redirect_count
215217

216218
if self.path_style or self.is_cname:
217219
self.is_signature_negotiation = False
@@ -332,9 +334,17 @@ def _make_post_request(self, bucketName, objectKey=None, pathArgs=None, headers=
332334
def _make_put_request(self, bucketName, objectKey=None, pathArgs=None, headers=None, entity=None, chunkedMode=False, methodName=None, readable=False):
333335
return self._make_request_with_retry(const.HTTP_METHOD_PUT, bucketName, objectKey, pathArgs, headers, entity, chunkedMode, methodName=methodName, readable=readable)
334336

337+
def _make_error_result(self, e, ret):
338+
self.log_client.log(ERROR, 'request error, %s' % e)
339+
self.log_client.log(ERROR, traceback.format_exc())
340+
if ret is not None:
341+
return ret
342+
raise e
343+
335344
def _make_request_with_retry(self, methodType, bucketName, objectKey=None, pathArgs=None, headers=None,
336345
entity=None, chunkedMode=False, methodName=None, readable=False, parseMethod=None, redirectLocation=None, skipAuthentication=False):
337346
flag = 0
347+
redirect_count = 0
338348
conn = None
339349
_redirectLocation = redirectLocation
340350
while True:
@@ -349,16 +359,16 @@ def _make_request_with_retry(self, methodType, bucketName, objectKey=None, pathA
349359
else:
350360
util.close_conn(conn, self.log_client)
351361
if isinstance(e, _RedirectException):
362+
redirect_count += 1
352363
_redirectLocation = e.location
353364
flag -= 1
354365
ret = e.result
355-
366+
if redirect_count >= self.max_redirect_count:
367+
self.log_client.log(ERROR, 'request redirect count [%d] greater than max redirect count [%d]' % (
368+
redirect_count, self.max_redirect_count))
369+
return self._make_error_result(e, ret)
356370
if flag >= self.max_retry_count or readable:
357-
self.log_client.log(ERROR, 'request error, %s' % e)
358-
self.log_client.log(ERROR, traceback.format_exc())
359-
if ret is not None:
360-
return ret
361-
raise e
371+
return self._make_error_result(e, ret)
362372
flag += 1
363373
time.sleep(math.pow(2, flag) * 0.05)
364374
self.log_client.log(WARNING, 'request again, time:%d' % int(flag))
@@ -769,6 +779,7 @@ def _parse_xml_internal(self, result, methodName=None, chuckSize=65536, readable
769779
break
770780
xml = chunk if xml is None else xml + chunk
771781
header = self._rename_response_headers(headers)
782+
indicator = headers.get(self.ha.indicator_header())
772783
if status < 300:
773784
if methodName is not None:
774785
parseMethod = getattr(self.convertor, 'parse' + methodName[:1].upper() + methodName[1:])
@@ -799,7 +810,7 @@ def _parse_xml_internal(self, result, methodName=None, chuckSize=65536, readable
799810

800811
if not requestId:
801812
requestId = headers.get(self.ha.request_id_header())
802-
813+
803814
self.log_client.log(DEBUG, 'http response result:status:%d,reason:%s,code:%s,message:%s,headers:%s',
804815
status, reason, code, message, header)
805816

@@ -808,7 +819,7 @@ def _parse_xml_internal(self, result, methodName=None, chuckSize=65536, readable
808819
status, reason, code, message, requestId)
809820

810821
ret = GetResult(code=code, message=message, status=status, reason=reason, body=body,
811-
requestId=requestId, hostId=hostId, resource=resource, header=header)
822+
requestId=requestId, hostId=hostId, resource=resource, header=header, indicator=indicator)
812823

813824
if not readable:
814825
if status >= 300 and status < 400 and status != 304 and const.LOCATION_HEADER.lower() in headers:

0 commit comments

Comments
 (0)