Skip to content

Commit 46ee6e9

Browse files
authored
Merge pull request #130 from aliyun/log
Log
2 parents 1af4015 + 4dad6d5 commit 46ee6e9

31 files changed

+1202
-148
lines changed

examples/object_callback.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@
7272
upload_id = bucket.init_multipart_upload(key).upload_id
7373
# 上传分片
7474
result = bucket.upload_part(key, upload_id, 1, content)
75-
parts.append(oss2.models.PartInfo(1, result.etag))
75+
parts.append(oss2.models.PartInfo(1, result.etag, size = len(content), part_crc = result.crc))
7676
# 完成上传并回调
7777
result = bucket.complete_multipart_upload(key, upload_id, parts, headers)
7878

examples/object_check.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ def _prepare_temp_file(content):
122122
encode_md5 = calculate_data_md5(content)
123123
for i in range(3):
124124
result = bucket.upload_part(key, upload_id, i+1, content, headers={'Content-MD5': encode_md5})
125-
parts.append(oss2.models.PartInfo(i+1, result.etag))
125+
parts.append(oss2.models.PartInfo(i+1, result.etag, size = len(content), part_crc = result.crc))
126126

127127
# 完成上传并回调
128128
result = bucket.complete_multipart_upload(key, upload_id, parts)
@@ -156,7 +156,7 @@ def _prepare_temp_file(content):
156156
# 上传分片,每个分片单独CRC校验
157157
for i in range(3):
158158
result = bucket.upload_part(key, upload_id, i+1, content)
159-
parts.append(oss2.models.PartInfo(i+1, result.etag))
159+
parts.append(oss2.models.PartInfo(i+1, result.etag, size = len(content), part_crc = result.crc))
160160

161161
# 完成上传并回调
162162
result = bucket.complete_multipart_upload(key, upload_id, parts)
@@ -178,14 +178,14 @@ def _prepare_temp_file(content):
178178
assert result.client_crc == result.server_crc
179179

180180

181-
# 下载文件到本地
181+
# 下载文件到本地,默认开启CRC校验
182182
local_file = 'download.txt'
183183
result = bucket.get_object_to_file(key, local_file)
184184
os.remove(local_file)
185185
assert result.client_crc == result.server_crc
186186

187187

188-
# 断点续传下载,不支持CRC校验,可以用如下方法校验
188+
# 断点续传下载, 自动开启CRC校验,也可以用如下方法校验
189189
oss2.resumable_download(bucket, key, local_file,
190190
multiget_threshold=200*1024,
191191
part_size=100*1024,

examples/object_progress.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def _prepare_temp_file(content):
8080
# 上传分片
8181
for i in range(3):
8282
result = bucket.upload_part(key, upload_id, i+1, content, progress_callback=percentage)
83-
parts.append(oss2.models.PartInfo(i+1, result.etag))
83+
parts.append(oss2.models.PartInfo(i+1, result.etag, size = len(content), part_crc = result.crc))
8484

8585
# 完成上传并回调
8686
result = bucket.complete_multipart_upload(key, upload_id, parts)

examples/object_server_crypto.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# -*- coding: utf-8 -*-
2+
3+
import os
4+
import shutil
5+
6+
import oss2
7+
from oss2.headers import RequestHeader
8+
9+
10+
# 以下代码展示了其用服务端加密功能的各项操作
11+
12+
13+
# 首先初始化AccessKeyId、AccessKeySecret、Endpoint等信息。
14+
# 通过环境变量获取,或者把诸如“<你的AccessKeyId>”替换成真实的AccessKeyId等。
15+
#
16+
# 以杭州区域为例,Endpoint可以是:
17+
# http://oss-cn-hangzhou.aliyuncs.com
18+
# https://oss-cn-hangzhou.aliyuncs.com
19+
# 分别以HTTP、HTTPS协议访问。
20+
access_key_id = os.getenv('OSS_TEST_ACCESS_KEY_ID', '<你的AccessKeyId>')
21+
access_key_secret = os.getenv('OSS_TEST_ACCESS_KEY_SECRET', '<你的AccessKeySecret>')
22+
bucket_name = os.getenv('OSS_TEST_BUCKET', '<你的Bucket>')
23+
endpoint = os.getenv('OSS_TEST_ENDPOINT', '<你的访问域名>')
24+
25+
26+
# 确认上面的参数都填写正确了
27+
for param in (access_key_id, access_key_secret, bucket_name, endpoint):
28+
assert '<' not in param, '请设置参数:' + param
29+
30+
31+
key = 'server-crypto.txt'
32+
content = b'a' * 1024 * 1024
33+
34+
# 创建Bucket对象,所有Object相关的接口都可以通过Bucket对象来进行
35+
bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
36+
37+
38+
# 上传文件使用服务端AES256进行加密
39+
myHeader = RequestHeader()
40+
myHeader.set_server_side_encryption("AES256")
41+
bucket.put_object(key, content, headers = myHeader)
42+
43+
# 下载文件验证一下
44+
result = bucket.get_object(key)
45+
content_got = b''
46+
for chunk in result:
47+
content_got += chunk
48+
assert content_got == content
49+
50+
# 上传文件使用服务端KMS进行加密
51+
myHeader = RequestHeader()
52+
myHeader.set_server_side_encryption("KMS", cmk_id = "11111")
53+
bucket.put_object(key, content, headers = myHeader)
54+
55+
# 下载文件验证一下
56+
result = bucket.get_object(key)
57+
content_got = b''
58+
for chunk in result:
59+
content_got += chunk
60+
assert content_got == content

examples/upload.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,18 +69,18 @@ def random_string(n):
6969
upload_id = bucket.init_multipart_upload(key).upload_id
7070

7171
# 逐个上传分片
72-
# 其中oss2.SizedFileAdapter()把fileobj转换为一个新的文件对象,新的文件对象可读的长度等于num_to_upload
72+
# 其中oss2.SizedFileAdapter()把fileobj转换为一个新的文件对象,新的文件对象可读的长度等于size_to_upload
7373
with open(filename, 'rb') as fileobj:
7474
parts = []
7575
part_number = 1
7676
offset = 0
7777
while offset < total_size:
78-
num_to_upload = min(part_size, total_size - offset)
78+
size_to_upload = min(part_size, total_size - offset)
7979
result = bucket.upload_part(key, upload_id, part_number,
80-
oss2.SizedFileAdapter(fileobj, num_to_upload))
81-
parts.append(oss2.models.PartInfo(part_number, result.etag))
80+
oss2.SizedFileAdapter(fileobj, size_to_upload))
81+
parts.append(oss2.models.PartInfo(part_number, result.etag, size = size_to_upload, part_crc = result.crc))
8282

83-
offset += num_to_upload
83+
offset += size_to_upload
8484
part_number += 1
8585

8686
# 完成分片上传
@@ -91,4 +91,4 @@ def random_string(n):
9191
assert bucket.get_object(key).read() == fileobj.read()
9292

9393

94-
os.remove(filename)
94+
os.remove(filename)

oss2/__init__.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,35 @@
2828
from .models import BUCKET_STORAGE_CLASS_STANDARD, BUCKET_STORAGE_CLASS_IA, BUCKET_STORAGE_CLASS_ARCHIVE
2929

3030
from .crypto import LocalRsaProvider, AliKMSProvider
31+
import logging
32+
33+
logger = logging.getLogger('oss2')
34+
35+
36+
def set_file_logger(file_path, name="oss2", level=logging.INFO, format_string=None):
37+
global logger
38+
if not format_string:
39+
format_string = "%(asctime)s %(name)s [%(levelname)s] %(thread)d : %(message)s"
40+
logger = logging.getLogger(name)
41+
logger.setLevel(level)
42+
fh = logging.FileHandler(file_path)
43+
fh.setLevel(level)
44+
formatter = logging.Formatter(format_string)
45+
fh.setFormatter(formatter)
46+
logger.addHandler(fh)
47+
48+
49+
def set_stream_logger(name='oss2', level=logging.DEBUG, format_string=None):
50+
global logger
51+
if not format_string:
52+
format_string = "%(asctime)s %(name)s [%(levelname)s] %(thread)d : %(message)s"
53+
logger = logging.getLogger(name)
54+
logger.setLevel(level)
55+
fh = logging.StreamHandler()
56+
fh.setLevel(level)
57+
formatter = logging.Formatter(format_string)
58+
fh.setFormatter(formatter)
59+
logger.addHandler(fh)
60+
61+
62+
set_stream_logger('oss2', logging.INFO)

0 commit comments

Comments
 (0)