Skip to content

Commit 1857de1

Browse files
committed
feat: add uc backup hosts
1 parent 58365a3 commit 1857de1

File tree

4 files changed

+36
-17
lines changed

4 files changed

+36
-17
lines changed

qiniu/config.py

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22
RS_HOST = 'http://rs.qiniu.com' # 管理操作Host
33
RSF_HOST = 'http://rsf.qbox.me' # 列举操作Host
44
API_HOST = 'http://api.qiniuapi.com' # 数据处理操作Host
5-
UC_HOST = 'https://uc.qbox.me' # 获取空间信息Host
65
QUERY_REGION_HOST = 'https://uc.qiniuapi.com'
76
QUERY_REGION_BACKUP_HOSTS = [
87
'kodo-config.qiniuapi.com',
98
'uc.qbox.me'
109
]
10+
UC_HOST = QUERY_REGION_HOST # 获取空间信息Host
11+
UC_BACKUP_HOSTS = QUERY_REGION_BACKUP_HOSTS
1112

1213
_BLOCK_SIZE = 1024 * 1024 * 4 # 断点续传分块大小,该参数为接口规格,暂不支持修改
1314

@@ -17,6 +18,7 @@
1718
'default_rsf_host': RSF_HOST,
1819
'default_api_host': API_HOST,
1920
'default_uc_host': UC_HOST,
21+
'default_uc_backup_hosts': UC_BACKUP_HOSTS,
2022
'default_query_region_host': QUERY_REGION_HOST,
2123
'default_query_region_backup_hosts': QUERY_REGION_BACKUP_HOSTS,
2224
'default_backup_hosts_retry_times': 3, # 仅控制旧区域 LegacyRegion 查询 Hosts 的重试次数
@@ -27,18 +29,8 @@
2729
}
2830

2931
_is_customized_default = {
30-
'default_zone': False,
31-
'default_rs_host': False,
32-
'default_rsf_host': False,
33-
'default_api_host': False,
34-
'default_uc_host': False,
35-
'default_query_region_host': False,
36-
'default_query_region_backup_hosts': False,
37-
'default_backup_hosts_retry_times': False,
38-
'connection_timeout': False,
39-
'connection_retries': False,
40-
'connection_pool': False,
41-
'default_upload_threshold': False
32+
k: False
33+
for k in _config.keys()
4234
}
4335

4436

@@ -59,7 +51,7 @@ def set_default(
5951
connection_timeout=None, default_rs_host=None, default_uc_host=None,
6052
default_rsf_host=None, default_api_host=None, default_upload_threshold=None,
6153
default_query_region_host=None, default_query_region_backup_hosts=None,
62-
default_backup_hosts_retry_times=None):
54+
default_backup_hosts_retry_times=None, default_uc_backup_hosts=None):
6355
if default_zone:
6456
_config['default_zone'] = default_zone
6557
_is_customized_default['default_zone'] = True
@@ -75,16 +67,23 @@ def set_default(
7567
if default_uc_host:
7668
_config['default_uc_host'] = default_uc_host
7769
_is_customized_default['default_uc_host'] = True
70+
_config['default_uc_backup_hosts'] = []
71+
_is_customized_default['default_uc_backup_hosts'] = True
7872
_config['default_query_region_host'] = default_uc_host
7973
_is_customized_default['default_query_region_host'] = True
8074
_config['default_query_region_backup_hosts'] = []
8175
_is_customized_default['default_query_region_backup_hosts'] = True
76+
if default_uc_backup_hosts is not None:
77+
_config['default_uc_backup_hosts'] = default_uc_backup_hosts
78+
_is_customized_default['default_uc_backup_hosts'] = True
79+
_config['default_query_region_backup_hosts'] = default_uc_backup_hosts
80+
_is_customized_default['default_query_region_backup_hosts'] = True
8281
if default_query_region_host:
8382
_config['default_query_region_host'] = default_query_region_host
8483
_is_customized_default['default_query_region_host'] = True
8584
_config['default_query_region_backup_hosts'] = []
8685
_is_customized_default['default_query_region_backup_hosts'] = True
87-
if default_query_region_backup_hosts:
86+
if default_query_region_backup_hosts is not None:
8887
_config['default_query_region_backup_hosts'] = default_query_region_backup_hosts
8988
_is_customized_default['default_query_region_backup_hosts'] = True
9089
if default_backup_hosts_retry_times:

qiniu/services/storage/bucket.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -626,9 +626,10 @@ def __uc_do_with_retrier(self, url_resource, data=None):
626626
# handle compatibility for default_uc
627627
if not regions:
628628
uc_host = config.get_default('default_uc_host')
629+
uc_backup_hosts = config.get_default('default_uc_backup_hosts')
629630
uc_endpoints = [
630631
Endpoint.from_host(h)
631-
for h in [uc_host]
632+
for h in [uc_host] + uc_backup_hosts
632633
]
633634
regions = [Region(services={ServiceName.UC: uc_endpoints})]
634635

tests/cases/conftest.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ def set_conf_default(request):
6464
'default_rsf_host': qn_config.RSF_HOST,
6565
'default_api_host': qn_config.API_HOST,
6666
'default_uc_host': qn_config.UC_HOST,
67+
'default_uc_backup_hosts': qn_config.UC_BACKUP_HOSTS,
6768
'default_query_region_host': qn_config.QUERY_REGION_HOST,
6869
'default_query_region_backup_hosts': [
6970
'uc.qbox.me',

tests/cases/test_zone/test_qiniu_conf.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import pytest
22

33
from qiniu import Zone
4+
from qiniu.config import get_default
45

56
TEST_RS_HOST = 'rs.test.region.compatible.config.qiniu.com'
67
TEST_RSF_HOST = 'rsf.test.region.compatible.config.qiniu.com'
@@ -9,9 +10,26 @@
910

1011
class TestQiniuConfWithZone:
1112
"""
12-
Test qiniu.conf with Zone(aka legacy Region)
13+
Test qiniu.conf with Zone(aka LegacyRegion)
1314
"""
1415

16+
@pytest.mark.parametrize(
17+
'set_conf_default',
18+
[
19+
{
20+
'default_uc_backup_hosts': [],
21+
},
22+
{
23+
'default_uc_backup_hosts': [],
24+
'default_query_region_backup_hosts': []
25+
}
26+
],
27+
indirect=True
28+
)
29+
def test_disable_backup_hosts(self, set_conf_default):
30+
assert get_default('default_uc_backup_hosts') == []
31+
assert get_default('default_query_region_backup_hosts') == []
32+
1533
@pytest.mark.parametrize(
1634
'set_conf_default',
1735
[

0 commit comments

Comments
 (0)