Skip to content

Commit c49738a

Browse files
author
zhanglei3
committed
Merge branch 'develop' into 'master'
新增模型许可证运行模式(用于第三方本地使用 SDK 启动测试服务器运行模型) See merge request bge/bge-python-sdk!9
2 parents d13a93f + 3b495fd commit c49738a

6 files changed

Lines changed: 414 additions & 19 deletions

File tree

bgesdk/client.py

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -924,7 +924,7 @@ def get_data_items(self, namespace, biosample_id,
924924
'/data_item/batch_retrieve', params=params, timeout=timeout)
925925
return models.Model(result)
926926

927-
def invoke_model(self, model_id, **kwargs):
927+
def invoke_model(self, model_id, headers=None, **kwargs):
928928
"""模型调用
929929
930930
Args:
@@ -943,10 +943,15 @@ def invoke_model(self, model_id, **kwargs):
943943
self.endpoint, max_retries=max_retries, verbose=verbose)
944944
request.set_authorization(self.token_type, self.access_token)
945945
model_url = '/model/{}'.format(model_id)
946-
result = request.get(model_url, params=params, timeout=timeout)
946+
result = request.get(
947+
model_url,
948+
params=params,
949+
headers=headers,
950+
timeout=timeout
951+
)
947952
return models.Model(result)
948953

949-
def invoke_draft_model(self, model_id, **kwargs):
954+
def invoke_draft_model(self, model_id, headers=None, **kwargs):
950955
"""调用灰度部署版本模型
951956
952957
Args:
@@ -965,7 +970,12 @@ def invoke_draft_model(self, model_id, **kwargs):
965970
self.endpoint, max_retries=max_retries, verbose=verbose)
966971
request.set_authorization(self.token_type, self.access_token)
967972
model_url = '/model/{}/draft'.format(model_id)
968-
result = request.get(model_url, params=params, timeout=timeout)
973+
result = request.get(
974+
model_url,
975+
params=params,
976+
headers=headers,
977+
timeout=timeout
978+
)
969979
return models.Model(result)
970980

971981
def deploy_model(self, model_id, object_name=None, runtime=None,
@@ -1124,6 +1134,32 @@ def upload_callback(monitor):
11241134
sys.stdout.write('')
11251135
return models.Model(result)
11261136

1137+
def model_license(self, model_id, expires=60, params=None):
1138+
"""模型运行许可
1139+
1140+
Args:
1141+
model_id (str): 模型编号。
1142+
**kwargs: 模型相关参数,由模型定义的参数决定;
1143+
1144+
Returns:
1145+
Model: 授权模型运行的对称加密相关参数;
1146+
"""
1147+
data = {}
1148+
data['model_id'] = model_id
1149+
data['expires'] = expires
1150+
if params:
1151+
params = json.dumps(params)
1152+
data['params'] = params
1153+
timeout = self.timeout
1154+
verbose = self.verbose
1155+
max_retries = self.max_retries
1156+
request = HTTPRequest(
1157+
self.endpoint, max_retries=max_retries, verbose=verbose)
1158+
request.set_authorization(self.token_type, self.access_token)
1159+
model_url = '/model/license'
1160+
result = request.post(model_url, data=data, timeout=timeout)
1161+
return models.Model(result)
1162+
11271163
def task(self, task_id):
11281164
"""获取任务结果
11291165

bgesdk/http.py

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,13 @@ def __init__(self, endpoint, max_retries=None, verbose=False):
2727
self.session = requests.Session()
2828
if max_retries is not None:
2929
self.session.mount(
30-
'http://', HTTPAdapter(max_retries=max_retries))
30+
'http://',
31+
HTTPAdapter(max_retries=max_retries)
32+
)
3133
self.session.mount(
32-
'https://', HTTPAdapter(max_retries=max_retries))
34+
'https://',
35+
HTTPAdapter(max_retries=max_retries)
36+
)
3337

3438
def set_authorization(self, token_type, access_token):
3539
"""设置 Authorization 头部
@@ -38,7 +42,9 @@ def set_authorization(self, token_type, access_token):
3842
access_token (str): 访问令牌
3943
"""
4044
self.headers['Authorization'] = '{} {}'.format(
41-
token_type, access_token)
45+
token_type,
46+
access_token
47+
)
4248

4349
def get(self, path, params=None, headers=None, timeout=None):
4450
"""GET 接口请求
@@ -53,7 +59,12 @@ def get(self, path, params=None, headers=None, timeout=None):
5359
object: 请求返回值
5460
"""
5561
return self._request(
56-
'GET', path, params=params, headers=headers, timeout=timeout)
62+
'GET',
63+
path,
64+
params=params,
65+
headers=headers,
66+
timeout=timeout
67+
)
5768

5869
def post(self, path, params=None, data=None, files=None, headers=None,
5970
timeout=None):
@@ -71,8 +82,14 @@ def post(self, path, params=None, data=None, files=None, headers=None,
7182
object: 请求返回值
7283
"""
7384
return self._request(
74-
'POST', path, params=params, data=data, files=files,
75-
headers=headers, timeout=timeout)
85+
'POST',
86+
path,
87+
params=params,
88+
data=data,
89+
files=files,
90+
headers=headers,
91+
timeout=timeout
92+
)
7693

7794
def _request(self, method, path, timeout=None, headers=None, **kwargs):
7895
"""发送 HTTP 请求
@@ -98,8 +115,12 @@ def _request(self, method, path, timeout=None, headers=None, **kwargs):
98115
': %s\n\t**kwargs=%s'), method, url, headers, timeout, kwargs)
99116
try:
100117
resp = self.session.request(
101-
method=method, url=url, headers=headers, timeout=timeout,
102-
**kwargs)
118+
method=method,
119+
url=url,
120+
headers=headers,
121+
timeout=timeout,
122+
**kwargs
123+
)
103124
resp.raise_for_status()
104125
except requests.exceptions.HTTPError as e:
105126
raise BGEError('API request error: %s' % e)

0 commit comments

Comments
 (0)