Skip to content

Commit 00eda39

Browse files
authored
Merge pull request #237 from l-iberty/master
l-iberty dev
2 parents 338498c + da82820 commit 00eda39

File tree

6 files changed

+1466
-183
lines changed

6 files changed

+1466
-183
lines changed

demo/ci_media.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -929,7 +929,7 @@ def ci_list_media_pic_jobs():
929929

930930
def ci_get_media_pic_jobs():
931931
# 图片处理任务详情
932-
response = client.ci_get_media_jobs(
932+
response = client.ci_get_media_pic_jobs(
933933
Bucket=bucket_name,
934934
JobIDs='c01742xxxxxxxxxxxxxxxxxx7438e39',
935935
ContentType='application/xml'

qcloud_cos/cos_client.py

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class CosConfig(object):
4242

4343
def __init__(self, Appid=None, Region=None, SecretId=None, SecretKey=None, Token=None, CredentialInstance=None, Scheme=None, Timeout=None,
4444
Access_id=None, Access_key=None, Secret_id=None, Secret_key=None, Endpoint=None, IP=None, Port=None,
45-
Anonymous=None, UA=None, Proxies=None, Domain=None, ServiceDomain=None, PoolConnections=10,
45+
Anonymous=None, UA=None, Proxies=None, Domain=None, ServiceDomain=None, KeepAlive=True, PoolConnections=10,
4646
PoolMaxSize=10, AllowRedirects=False, SignHost=True, EndpointCi=None, EndpointPic=None, EnableOldDomain=True, EnableInternalDomain=True):
4747
"""初始化,保存用户的信息
4848
@@ -65,6 +65,7 @@ def __init__(self, Appid=None, Region=None, SecretId=None, SecretKey=None, Token
6565
:param Proxies(dict): 使用代理来访问COS
6666
:param Domain(string): 使用自定义的域名来访问COS
6767
:param ServiceDomain(string): 使用自定义的域名来访问cos service
68+
:param KeepAlive(bool): 是否使用长连接
6869
:param PoolConnections(int): 连接池个数
6970
:param PoolMaxSize(int): 连接池中最大连接数
7071
:param AllowRedirects(bool): 是否重定向
@@ -87,6 +88,7 @@ def __init__(self, Appid=None, Region=None, SecretId=None, SecretKey=None, Token
8788
self._proxies = Proxies
8889
self._domain = Domain
8990
self._service_domain = ServiceDomain
91+
self._keep_alive = KeepAlive
9092
self._pool_connections = PoolConnections
9193
self._pool_maxsize = PoolMaxSize
9294
self._allow_redirects = AllowRedirects
@@ -332,6 +334,8 @@ def send_request(self, method, url, bucket, timeout=30, cos_request=True, **kwar
332334
kwargs['headers']['Host'] = self._conf._domain
333335
elif bucket is not None:
334336
kwargs['headers']['Host'] = self._conf.get_host(bucket)
337+
if self._conf._keep_alive == False:
338+
kwargs['headers']['Connection'] = 'close'
335339
kwargs['headers'] = format_values(kwargs['headers'])
336340

337341
file_position = None
@@ -1273,7 +1277,7 @@ def select_object_content(self, Bucket, Key, Expression, ExpressionType, InputSe
12731277
return data
12741278

12751279
# s3 bucket interface begin
1276-
def create_bucket(self, Bucket, BucketAZConfig=None, **kwargs):
1280+
def create_bucket(self, Bucket, BucketAZConfig=None, BucketArchConfig=None, **kwargs):
12771281
"""创建一个bucket
12781282
12791283
:param Bucket(string): 存储桶名称. 存储桶名称不支持大写字母,COS 后端会将用户传入的大写字母自动转换为小写字母用于创建存储桶.
@@ -1297,11 +1301,16 @@ def create_bucket(self, Bucket, BucketAZConfig=None, **kwargs):
12971301
"""
12981302
headers = mapped(kwargs)
12991303
xml_config = None
1304+
bucket_config = dict()
13001305
if BucketAZConfig == 'MAZ':
1301-
bucket_config = {'BucketAZConfig': 'MAZ'}
1306+
bucket_config.update({'BucketAZConfig': 'MAZ'})
1307+
if BucketArchConfig == 'OFS':
1308+
bucket_config.update({'BucketArchConfig': 'OFS'})
1309+
if len(bucket_config) != 0:
13021310
xml_config = format_xml(data=bucket_config, root='CreateBucketConfiguration')
13031311
headers['Content-MD5'] = get_md5(xml_config)
13041312
headers['Content-Type'] = 'application/xml'
1313+
13051314
url = self._conf.uri(bucket=Bucket)
13061315
logger.info("create bucket, url=:{url} ,headers=:{headers}".format(
13071316
url=url,
@@ -3531,8 +3540,8 @@ def download_file(self, Bucket, Key, DestFilePath, PartSize=20, MAXThread=5, Ena
35313540

35323541
def upload_file(self, Bucket, Key, LocalFilePath, PartSize=1, MAXThread=5, EnableMD5=False, progress_callback=None,
35333542
**kwargs):
3534-
"""小于等于20MB的文件简单上传,大于20MB的文件使用分块上传
35353543

3544+
"""
35363545
:param Bucket(string): 存储桶名称.
35373546
:param key(string): 分块上传路径名.
35383547
:param LocalFilePath(string): 本地文件路径名.
@@ -3557,7 +3566,7 @@ def upload_file(self, Bucket, Key, LocalFilePath, PartSize=1, MAXThread=5, Enabl
35573566
)
35583567
"""
35593568
file_size = os.path.getsize(LocalFilePath)
3560-
if file_size <= 1024 * 1024 * 20:
3569+
if file_size <= 1024 * 1024 * PartSize:
35613570
with open(LocalFilePath, 'rb') as fp:
35623571
rt = self.put_object(Bucket=Bucket, Key=Key, Body=fp, EnableMD5=EnableMD5, **kwargs)
35633572
return rt
@@ -7012,9 +7021,9 @@ def ci_list_workflowexecution(self, Bucket, WorkflowId, Name='', StartCreationTi
70127021
NextToken=to_unicode('nextToken='+NextToken)
70137022
)
70147023
if StartCreationTime is not None:
7015-
url = u"{url}&{StartCreationTime}".format(StartCreationTime=to_unicode('startCreationTime='+StartCreationTime))
7024+
url = u"{url}&{StartCreationTime}".format(url=to_unicode(url), StartCreationTime=quote(to_bytes(to_unicode('startCreationTime='+StartCreationTime)), b'/-_.~='))
70167025
if EndCreationTime is not None:
7017-
url = u"{url}&{EndCreationTime}".format(EndCreationTime=to_unicode('endCreationTime='+EndCreationTime))
7026+
url = u"{url}&{EndCreationTime}".format(url=to_unicode(url), EndCreationTime=quote(to_bytes(to_unicode('endCreationTime='+EndCreationTime)), b'/-_.~='))
70187027
logger.info("ci_list_workflowexecution result, url=:{url} ,headers=:{headers}, params=:{params}".format(
70197028
url=url,
70207029
headers=headers,
@@ -7518,9 +7527,11 @@ def ci_list_doc_jobs(self, Bucket, QueueId, StartCreationTime=None, EndCreationT
75187527
NextToken=to_unicode('nextToken='+NextToken)
75197528
)
75207529
if StartCreationTime is not None:
7521-
url = u"{url}&{StartCreationTime}".format(StartCreationTime=to_unicode('startCreationTime='+StartCreationTime))
7530+
url = u"{url}&{StartCreationTime}".format(url=to_unicode(url),
7531+
StartCreationTime=quote(to_bytes(to_unicode('startCreationTime='+StartCreationTime)), b'/-_.~='))
75227532
if EndCreationTime is not None:
7523-
url = u"{url}&{EndCreationTime}".format(EndCreationTime=to_unicode('endCreationTime='+EndCreationTime))
7533+
url = u"{url}&{EndCreationTime}".format(url=to_unicode(url),
7534+
EndCreationTime=quote(to_bytes(to_unicode('endCreationTime='+EndCreationTime)), b'/-_.~='))
75247535
logger.info("list_doc_jobs result, url=:{url} ,headers=:{headers}, params=:{params}".format(
75257536
url=url,
75267537
headers=headers,
@@ -8130,9 +8141,11 @@ def ci_list_asr_jobs(self, Bucket, QueueId, StartCreationTime=None, EndCreationT
81308141
NextToken=to_unicode('nextToken='+NextToken)
81318142
)
81328143
if StartCreationTime is not None:
8133-
url = u"{url}&{StartCreationTime}".format(StartCreationTime=to_unicode('startCreationTime='+StartCreationTime))
8144+
url = u"{url}&{StartCreationTime}".format(url=to_unicode(url),
8145+
StartCreationTime=quote(to_bytes(to_unicode('startCreationTime='+StartCreationTime)), b'/-_.~='))
81348146
if EndCreationTime is not None:
8135-
url = u"{url}&{EndCreationTime}".format(EndCreationTime=to_unicode('endCreationTime='+EndCreationTime))
8147+
url = u"{url}&{EndCreationTime}".format(url=to_unicode(url),
8148+
EndCreationTime=quote(to_bytes(to_unicode('endCreationTime='+EndCreationTime)), b'/-_.~='))
81368149
logger.info("list_asr_jobs result, url=:{url} ,headers=:{headers}, params=:{params}".format(
81378150
url=url,
81388151
headers=headers,

qcloud_cos/cos_comm.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -178,13 +178,13 @@ def xml_to_dict(data, origin_str="", replace_str=""):
178178
return xmldict
179179

180180

181-
def get_id_from_xml(data, name):
182-
"""解析xml中的特定字段"""
183-
tree = xml.dom.minidom.parseString(data)
184-
root = tree.documentElement
185-
result = root.getElementsByTagName(name)
186-
# use childNodes to get a list, if has no child get itself
187-
return result[0].childNodes[0].nodeValue
181+
# def get_id_from_xml(data, name):
182+
# """解析xml中的特定字段"""
183+
# tree = xml.dom.minidom.parseString(data)
184+
# root = tree.documentElement
185+
# result = root.getElementsByTagName(name)
186+
# # use childNodes to get a list, if has no child get itself
187+
# return result[0].childNodes[0].nodeValue
188188

189189

190190
def mapped(headers):

qcloud_cos/cos_threadpool.py

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -86,25 +86,26 @@ def get_result(self):
8686

8787

8888
if __name__ == '__main__':
89+
pass
8990

90-
pool = SimpleThreadPool(2)
91+
# pool = SimpleThreadPool(2)
9192

92-
def task_sleep(x):
93-
from time import sleep
94-
sleep(x)
95-
return 'hello, sleep %d seconds' % x
93+
# def task_sleep(x):
94+
# from time import sleep
95+
# sleep(x)
96+
# return 'hello, sleep %d seconds' % x
9697

97-
def raise_exception():
98-
raise ValueError("Pa! Exception!")
98+
# def raise_exception():
99+
# raise ValueError("Pa! Exception!")
99100

100-
for i in range(1000):
101-
pool.add_task(task_sleep, 0.001)
102-
print(i)
103-
pool.add_task(task_sleep, 0)
104-
pool.add_task(task_sleep, 0)
101+
# for i in range(1000):
102+
# pool.add_task(task_sleep, 0.001)
103+
# print(i)
104+
# pool.add_task(task_sleep, 0)
105+
# pool.add_task(task_sleep, 0)
105106
# pool.add_task(raise_exception)
106107
# pool.add_task(raise_exception)
107108

108-
pool.wait_completion()
109-
print(pool.get_result())
109+
# pool.wait_completion()
110+
# print(pool.get_result())
110111
# [(1, 0, ['hello, sleep 5 seconds']), (2, 1, ['hello, sleep 2 seconds', 'hello, sleep 3 seconds', ValueError('Pa! Exception!',)])]

qcloud_cos/xml2dict.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,14 @@ def updateDict(self, aDict):
3636

3737

3838
if __name__ == "__main__":
39-
s = """<?xml version="1.0" encoding="utf-8" ?>
40-
<result xmlns= "wqa.bai.com">
41-
<count n="1">10</count>
42-
<data><id>1</id><name>test1</name></data>
43-
<data><id>2</id><name>test2</name></data>
44-
<data><id>3</id><name>test3</name></data>
45-
</result>"""
46-
root = xml.etree.ElementTree.fromstring(s)
47-
xmldict = Xml2Dict(root)
48-
print(xmldict)
39+
pass
40+
# s = """<?xml version="1.0" encoding="utf-8" ?>
41+
# <result xmlns= "wqa.bai.com">
42+
# <count n="1">10</count>
43+
# <data><id>1</id><name>test1</name></data>
44+
# <data><id>2</id><name>test2</name></data>
45+
# <data><id>3</id><name>test3</name></data>
46+
# </result>"""
47+
# root = xml.etree.ElementTree.fromstring(s)
48+
# xmldict = Xml2Dict(root)
49+
# print(xmldict)

0 commit comments

Comments
 (0)