Skip to content

Commit ef239e3

Browse files
committed
merged develop
2 parents afd8322 + e0f69e1 commit ef239e3

File tree

5 files changed

+17
-10
lines changed

5 files changed

+17
-10
lines changed

docs/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
title: Python SDK 使用指南
33
---
44

5+
# Python SDK 使用指南
6+
57
此 Python SDK 适用于2.x版本,基于 [七牛云存储官方API](http://docs.qiniu.com/) 构建。使用此 SDK 构建您的网络应用程序,能让您以非常便捷地方式将数据安全地存储到七牛云存储上。无论您的网络应用是一个网站程序,还是包括从云端(服务端程序)到终端(手持设备应用)的架构的服务或应用,通过七牛云存储及其 SDK,都能让您应用程序的终端用户高速上传和下载,同时也让您的服务端更加轻盈。
68

79
SDK 下载地址:<https://github.com/qiniu/python-sdk/tags>

qiniu/auth/up.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55

66
class Client(rpc.Client):
77
up_token = None
8-
8+
99
def __init__(self, up_token, host=None):
1010
if host is None:
1111
host = conf.UP_HOST
12+
if host.startswith("http://"):
13+
host = host[7:]
1214
self.up_token = up_token
1315
super(Client, self).__init__(host)
1416

qiniu/resumable_io.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,14 @@ def put(uptoken, key, f, fsize, extra):
8484
if extra.chunk_size is None:
8585
extra.chunk_size = _chunk_size
8686

87-
client = auth.up.Client(uptoken)
8887
for i in xrange(0, block_cnt):
8988
try_time = extra.try_times
9089
read_length = _block_size
9190
if (i+1)*_block_size > fsize:
9291
read_length = fsize - i*_block_size
9392
data_slice = f.read(read_length)
9493
while True:
95-
err = resumable_block_put(client, data_slice, i, extra)
94+
err = resumable_block_put(data_slice, i, extra, uptoken)
9695
if err is None:
9796
break
9897

@@ -101,34 +100,38 @@ def put(uptoken, key, f, fsize, extra):
101100
return None, err_put_failed
102101
print err, ".. retry"
103102

104-
return mkfile(client, key, fsize, extra)
103+
mkfile_client = auth.up.Client(uptoken, extra.progresses[-1]["host"])
104+
return mkfile(mkfile_client, key, fsize, extra)
105105

106106
# ----------------------------------------------------------
107107

108-
def resumable_block_put(client, block, index, extra):
108+
def resumable_block_put(block, index, extra, uptoken):
109109
block_size = len(block)
110110

111+
mkblk_client = auth.up.Client(uptoken, conf.UP_HOST)
111112
if extra.progresses[index] is None or "ctx" not in extra.progresses[index]:
112113
end_pos = extra.chunk_size-1
113114
if block_size < extra.chunk_size:
114115
end_pos = block_size-1
115116
chunk = block[: end_pos]
116117
crc32 = gen_crc32(chunk)
117118
chunk = bytearray(chunk)
118-
extra.progresses[index], err = mkblock(client, block_size, chunk)
119+
extra.progresses[index], err = mkblock(mkblk_client, block_size, chunk)
119120
if not extra.progresses[index]["crc32"] == crc32:
120121
return err_unmatched_checksum
121122
if err is not None:
122123
extra.notify_err(index, end_pos + 1, err)
123124
return err
124125
extra.notify(index, end_pos + 1, extra.progresses[index])
125126

127+
bput_client = auth.up.Client(uptoken, extra.progresses[index]["host"])
126128
while extra.progresses[index]["offset"] < block_size:
127129
offset = extra.progresses[index]["offset"]
128130
chunk = block[offset: offset+extra.chunk_size-1]
129131
crc32 = gen_crc32(chunk)
130132
chunk = bytearray(chunk)
131-
extra.progresses[index], err = putblock(client, extra.progresses[index], chunk)
133+
134+
extra.progresses[index], err = putblock(bput_client, extra.progresses[index], chunk)
132135
if not extra.progresses[index]["crc32"] == crc32:
133136
return err_unmatched_checksum
134137
if err is not None:

qiniu/rsf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,6 @@ def list_prefix(self, bucket, prefix=None, marker=None, limit=None):
3636
ops['prefix'] = prefix
3737
url = '%s?%s' % ('/list', urllib.urlencode(ops))
3838
ret, err = self.conn.call_with(url, body=None, content_type='application/x-www-form-urlencoded')
39-
if not ret or not ret.get('marker'):
39+
if ret and not ret.get('marker'):
4040
err = EOF
4141
return ret, err

qiniu/test/rsf_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
class TestRsf(unittest.TestCase):
1212
def test_list_prefix(self):
1313
c = rsf.Client()
14-
ret, err = c.list_prefix(bucket_name, limit = 1)
14+
ret, err = c.list_prefix(bucket_name, limit = 4)
1515
self.assertEqual(err is rsf.EOF or err is None, True)
16-
assert len(ret.get('items')) == 1
16+
assert len(ret.get('items')) == 4
1717

1818

1919
if __name__ == "__main__":

0 commit comments

Comments
 (0)