vikingdb-python-sdk 0.1.30__tar.gz → 0.1.32__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/PKG-INFO +26 -1
  2. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/README.md +25 -0
  3. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/_client.py +33 -1
  4. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/knowledge/client.py +4 -0
  5. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/memory/client.py +4 -0
  6. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/vector/client.py +8 -0
  7. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/version.py +1 -1
  8. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb_python_sdk.egg-info/PKG-INFO +26 -1
  9. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/LICENSE.txt +0 -0
  10. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/pyproject.toml +0 -0
  11. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/setup.cfg +0 -0
  12. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/__init__.py +0 -0
  13. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/auth.py +0 -0
  14. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/exceptions.py +0 -0
  15. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/knowledge/__init__.py +0 -0
  16. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/knowledge/collection.py +0 -0
  17. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/knowledge/exceptions.py +0 -0
  18. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/knowledge/models/__init__.py +0 -0
  19. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/knowledge/models/base.py +0 -0
  20. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/knowledge/models/chat.py +0 -0
  21. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/knowledge/models/doc.py +0 -0
  22. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/knowledge/models/point.py +0 -0
  23. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/knowledge/models/rerank.py +0 -0
  24. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/knowledge/models/search.py +0 -0
  25. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/knowledge/models/service_chat.py +0 -0
  26. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/memory/__init__.py +0 -0
  27. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/memory/collection.py +0 -0
  28. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/memory/exceptions.py +0 -0
  29. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/memory/types.py +0 -0
  30. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/request_options.py +0 -0
  31. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/vector/__init__.py +0 -0
  32. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/vector/base.py +0 -0
  33. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/vector/collection.py +0 -0
  34. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/vector/embedding.py +0 -0
  35. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/vector/exceptions.py +0 -0
  36. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/vector/index.py +0 -0
  37. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/vector/models/__init__.py +0 -0
  38. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/vector/models/base.py +0 -0
  39. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/vector/models/collection.py +0 -0
  40. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/vector/models/embedding.py +0 -0
  41. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/vector/models/index.py +0 -0
  42. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/vector/models/rerank.py +0 -0
  43. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb/vector/rerank.py +0 -0
  44. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb_python_sdk.egg-info/SOURCES.txt +0 -0
  45. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb_python_sdk.egg-info/dependency_links.txt +0 -0
  46. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb_python_sdk.egg-info/requires.txt +0 -0
  47. {vikingdb_python_sdk-0.1.30 → vikingdb_python_sdk-0.1.32}/vikingdb_python_sdk.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vikingdb-python-sdk
3
- Version: 0.1.30
3
+ Version: 0.1.32
4
4
  Summary: vikingdb Python SDK
5
5
  License: Apache-2.0
6
6
  Project-URL: Documentation, https://github.com/volcengine/vikingdb-python-sdk/blob/main/README.md
@@ -64,6 +64,8 @@ client = VikingDB(
64
64
  auth=auth,
65
65
  scheme="https",
66
66
  timeout=30,
67
+ pool_connections=20,
68
+ pool_maxsize=50,
67
69
  )
68
70
  index = client.index(
69
71
  collection_name=os.environ["VIKINGDB_COLLECTION"],
@@ -85,6 +87,8 @@ client = VikingMem(
85
87
  region="cn-beijing",
86
88
  auth=auth,
87
89
  scheme="http",
90
+ pool_connections=20,
91
+ pool_maxsize=50,
88
92
  )
89
93
 
90
94
  # Get collection
@@ -132,6 +136,8 @@ client = VikingKnowledge(
132
136
  host="api-knowledgebase.mlp.cn-beijing.volces.com",
133
137
  region="cn-beijing",
134
138
  scheme="http",
139
+ pool_connections=20,
140
+ pool_maxsize=50,
135
141
  )
136
142
 
137
143
  collection = client.collection(
@@ -149,6 +155,25 @@ print(f"request_id={resp.request_id} hits={len(resp.result.result_list or [])}")
149
155
  svc_client = VikingKnowledge(auth=APIKey(api_key=os.getenv("VIKING_SERVICE_API_KEY")))
150
156
  ```
151
157
 
158
+ ### Connection Pool Tuning
159
+
160
+ For high-concurrency synchronous workloads, the client constructors support
161
+ `pool_connections` and `pool_maxsize` and pass them through to
162
+ the underlying `requests` `HTTPAdapter`.
163
+
164
+ ```python
165
+ client = VikingDB(
166
+ host=os.environ["VIKINGDB_HOST"],
167
+ region=os.environ["VIKINGDB_REGION"],
168
+ auth=auth,
169
+ pool_connections=20,
170
+ pool_maxsize=50,
171
+ )
172
+ ```
173
+
174
+ - `pool_connections`: number of cached connection pools
175
+ - `pool_maxsize`: max reusable connections per host
176
+
152
177
  ### Example Guides
153
178
 
154
179
  #### Vector Examples
@@ -36,6 +36,8 @@ client = VikingDB(
36
36
  auth=auth,
37
37
  scheme="https",
38
38
  timeout=30,
39
+ pool_connections=20,
40
+ pool_maxsize=50,
39
41
  )
40
42
  index = client.index(
41
43
  collection_name=os.environ["VIKINGDB_COLLECTION"],
@@ -57,6 +59,8 @@ client = VikingMem(
57
59
  region="cn-beijing",
58
60
  auth=auth,
59
61
  scheme="http",
62
+ pool_connections=20,
63
+ pool_maxsize=50,
60
64
  )
61
65
 
62
66
  # Get collection
@@ -104,6 +108,8 @@ client = VikingKnowledge(
104
108
  host="api-knowledgebase.mlp.cn-beijing.volces.com",
105
109
  region="cn-beijing",
106
110
  scheme="http",
111
+ pool_connections=20,
112
+ pool_maxsize=50,
107
113
  )
108
114
 
109
115
  collection = client.collection(
@@ -121,6 +127,25 @@ print(f"request_id={resp.request_id} hits={len(resp.result.result_list or [])}")
121
127
  svc_client = VikingKnowledge(auth=APIKey(api_key=os.getenv("VIKING_SERVICE_API_KEY")))
122
128
  ```
123
129
 
130
+ ### Connection Pool Tuning
131
+
132
+ For high-concurrency synchronous workloads, the client constructors support
133
+ `pool_connections` and `pool_maxsize` and pass them through to
134
+ the underlying `requests` `HTTPAdapter`.
135
+
136
+ ```python
137
+ client = VikingDB(
138
+ host=os.environ["VIKINGDB_HOST"],
139
+ region=os.environ["VIKINGDB_REGION"],
140
+ auth=auth,
141
+ pool_connections=20,
142
+ pool_maxsize=50,
143
+ )
144
+ ```
145
+
146
+ - `pool_connections`: number of cached connection pools
147
+ - `pool_maxsize`: max reusable connections per host
148
+
124
149
  ### Example Guides
125
150
 
126
151
  #### Vector Examples
@@ -17,6 +17,7 @@ from volcengine.ServiceInfo import ServiceInfo
17
17
  from volcengine.base.Request import Request
18
18
  from volcengine.base.Service import Service
19
19
  import requests
20
+ from requests.adapters import HTTPAdapter
20
21
 
21
22
  from .auth import Auth, IAM, APIKey, HeaderAuth
22
23
  from .exceptions import (
@@ -26,6 +27,8 @@ from .exceptions import (
26
27
 
27
28
 
28
29
  _REQUEST_ID_HEADER = "X-Tt-Logid"
30
+ _DEFAULT_POOL_CONNECTIONS = 10
31
+ _DEFAULT_POOL_MAXSIZE = 10
29
32
 
30
33
 
31
34
  class Client(Service, ABC):
@@ -41,6 +44,9 @@ class Client(Service, ABC):
41
44
  sts_token: str = "",
42
45
  scheme: str = "http",
43
46
  timeout: int = 30,
47
+ pool_connections: int = _DEFAULT_POOL_CONNECTIONS,
48
+ pool_maxsize: int = _DEFAULT_POOL_MAXSIZE,
49
+ pool_block: bool = False,
44
50
  ):
45
51
  self.region = region
46
52
  self.service = service
@@ -57,7 +63,11 @@ class Client(Service, ABC):
57
63
  if isinstance(auth, (IAM, APIKey, HeaderAuth)):
58
64
  # volcengine Service.init() 可能读取环境变量或 ~/.volc/config 覆盖 AK/SK,
59
65
  # 这里确保使用用户传入的 IAM 凭证,因此不使用super().__init__初始化
60
- self.session = requests.session()
66
+ self.session = self._build_session(
67
+ pool_connections=pool_connections,
68
+ pool_maxsize=pool_maxsize,
69
+ pool_block=pool_block,
70
+ )
61
71
  else:
62
72
  raise ValueError("auth must be IAM, APIKey or HeaderAuth type")
63
73
 
@@ -85,6 +95,28 @@ class Client(Service, ABC):
85
95
  scheme=scheme,
86
96
  )
87
97
 
98
+ @staticmethod
99
+ def _build_session(
100
+ *,
101
+ pool_connections: int,
102
+ pool_maxsize: int,
103
+ pool_block: bool,
104
+ ) -> requests.Session:
105
+ if pool_connections <= 0:
106
+ raise ValueError("pool_connections must be greater than 0")
107
+ if pool_maxsize <= 0:
108
+ raise ValueError("pool_maxsize must be greater than 0")
109
+
110
+ session = requests.session()
111
+ adapter = HTTPAdapter(
112
+ pool_connections=pool_connections,
113
+ pool_maxsize=pool_maxsize,
114
+ pool_block=pool_block,
115
+ )
116
+ session.mount("http://", adapter)
117
+ session.mount("https://", adapter)
118
+ return session
119
+
88
120
  def prepare_request(self, api_info: ApiInfo, params: Optional[Mapping[str, Any]], doseq: int = 0):
89
121
  """Prepare a volcengine request without adding implicit headers."""
90
122
  request = Request()
@@ -43,6 +43,8 @@ class VikingKnowledge(Client):
43
43
  sts_token: str = "",
44
44
  scheme: str = "http",
45
45
  timeout: int = 30,
46
+ pool_connections: int = 10,
47
+ pool_maxsize: int = 10,
46
48
  ):
47
49
  super().__init__(
48
50
  host=host,
@@ -52,6 +54,8 @@ class VikingKnowledge(Client):
52
54
  sts_token=sts_token,
53
55
  scheme=scheme,
54
56
  timeout=timeout,
57
+ pool_connections=pool_connections,
58
+ pool_maxsize=pool_maxsize,
55
59
  )
56
60
 
57
61
  def _build_api_info(self):
@@ -38,6 +38,8 @@ class VikingMem(Client):
38
38
  sts_token: str = "",
39
39
  scheme: str = "http",
40
40
  timeout: int = 30,
41
+ pool_connections: int = 10,
42
+ pool_maxsize: int = 10,
41
43
  ):
42
44
  """
43
45
  Initialize Viking Memory Service
@@ -63,6 +65,8 @@ class VikingMem(Client):
63
65
  sts_token=sts_token,
64
66
  scheme=scheme,
65
67
  timeout=timeout,
68
+ pool_connections=pool_connections,
69
+ pool_maxsize=pool_maxsize,
66
70
  )
67
71
 
68
72
  def ping(self):
@@ -66,6 +66,8 @@ class VikingDB(Client):
66
66
  scheme: str = "https",
67
67
  sts_token: str = "",
68
68
  timeout: int = 30,
69
+ pool_connections: int = 10,
70
+ pool_maxsize: int = 10,
69
71
  ) -> None:
70
72
  if auth is None:
71
73
  raise ValueError("auth is required for VikingDB")
@@ -78,6 +80,8 @@ class VikingDB(Client):
78
80
  sts_token=sts_token,
79
81
  scheme=scheme,
80
82
  timeout=timeout,
83
+ pool_connections=pool_connections,
84
+ pool_maxsize=pool_maxsize,
81
85
  )
82
86
  try:
83
87
  resp = self.session.get(f"{scheme}://{host}/api/vikingdb/Ping")
@@ -317,6 +321,8 @@ class VikingVector(VikingDB):
317
321
  scheme: str = "https",
318
322
  sts_token: str = "",
319
323
  timeout: int = 30,
324
+ pool_connections: int = 10,
325
+ pool_maxsize: int = 10,
320
326
  ) -> None:
321
327
  warnings.warn(
322
328
  "VikingVector is deprecated; use VikingDB instead.",
@@ -330,4 +336,6 @@ class VikingVector(VikingDB):
330
336
  scheme=scheme,
331
337
  sts_token=sts_token,
332
338
  timeout=timeout,
339
+ pool_connections=pool_connections,
340
+ pool_maxsize=pool_maxsize,
333
341
  )
@@ -1,4 +1,4 @@
1
1
  # Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd.
2
2
  # SPDX-License-Identifier: Apache-2.0
3
3
 
4
- __version__ = '0.1.30'
4
+ __version__ = '0.1.32'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vikingdb-python-sdk
3
- Version: 0.1.30
3
+ Version: 0.1.32
4
4
  Summary: vikingdb Python SDK
5
5
  License: Apache-2.0
6
6
  Project-URL: Documentation, https://github.com/volcengine/vikingdb-python-sdk/blob/main/README.md
@@ -64,6 +64,8 @@ client = VikingDB(
64
64
  auth=auth,
65
65
  scheme="https",
66
66
  timeout=30,
67
+ pool_connections=20,
68
+ pool_maxsize=50,
67
69
  )
68
70
  index = client.index(
69
71
  collection_name=os.environ["VIKINGDB_COLLECTION"],
@@ -85,6 +87,8 @@ client = VikingMem(
85
87
  region="cn-beijing",
86
88
  auth=auth,
87
89
  scheme="http",
90
+ pool_connections=20,
91
+ pool_maxsize=50,
88
92
  )
89
93
 
90
94
  # Get collection
@@ -132,6 +136,8 @@ client = VikingKnowledge(
132
136
  host="api-knowledgebase.mlp.cn-beijing.volces.com",
133
137
  region="cn-beijing",
134
138
  scheme="http",
139
+ pool_connections=20,
140
+ pool_maxsize=50,
135
141
  )
136
142
 
137
143
  collection = client.collection(
@@ -149,6 +155,25 @@ print(f"request_id={resp.request_id} hits={len(resp.result.result_list or [])}")
149
155
  svc_client = VikingKnowledge(auth=APIKey(api_key=os.getenv("VIKING_SERVICE_API_KEY")))
150
156
  ```
151
157
 
158
+ ### Connection Pool Tuning
159
+
160
+ For high-concurrency synchronous workloads, the client constructors support
161
+ `pool_connections` and `pool_maxsize` and pass them through to
162
+ the underlying `requests` `HTTPAdapter`.
163
+
164
+ ```python
165
+ client = VikingDB(
166
+ host=os.environ["VIKINGDB_HOST"],
167
+ region=os.environ["VIKINGDB_REGION"],
168
+ auth=auth,
169
+ pool_connections=20,
170
+ pool_maxsize=50,
171
+ )
172
+ ```
173
+
174
+ - `pool_connections`: number of cached connection pools
175
+ - `pool_maxsize`: max reusable connections per host
176
+
152
177
  ### Example Guides
153
178
 
154
179
  #### Vector Examples