@@ -35,6 +35,8 @@ def __init__(self, url, token, debug=None, timeout=10000, enable_gzip=False, org
3535 :key bool verify_ssl: Set this to false to skip verifying SSL certificate when calling API from https server.
3636 :key str ssl_ca_cert: Set this to customize the certificate file to verify the peer.
3737 :key str proxy: Set this to configure the http proxy to be used (ex. http://localhost:3128)
38+ :key int connection_pool_maxsize: Number of connections to save that can be reused by urllib3.
39+ Defaults to "multiprocessing.cpu_count() * 5".
3840 :key urllib3.util.retry.Retry retries: Set the default retry strategy that is used for all HTTP requests
3941 except batching writes. As a default there is no one retry strategy.
4042
@@ -56,6 +58,7 @@ def __init__(self, url, token, debug=None, timeout=10000, enable_gzip=False, org
5658 conf .verify_ssl = kwargs .get ('verify_ssl' , True )
5759 conf .ssl_ca_cert = kwargs .get ('ssl_ca_cert' , None )
5860 conf .proxy = kwargs .get ('proxy' , None )
61+ conf .connection_pool_maxsize = kwargs .get ('connection_pool_maxsize' , conf .connection_pool_maxsize )
5962
6063 auth_token = self .token
6164 auth_header_name = "Authorization"
@@ -82,6 +85,7 @@ def from_config_file(cls, config_file: str = "config.ini", debug=None, enable_gz
8285 - timeout,
8386 - verify_ssl
8487 - ssl_ca_cert
88+ - connection_pool_maxsize
8589
8690 config.ini example::
8791
@@ -90,6 +94,7 @@ def from_config_file(cls, config_file: str = "config.ini", debug=None, enable_gz
9094 org=my-org
9195 token=my-token
9296 timeout=6000
97+ connection_pool_maxsize=25
9398
9499 [tags]
95100 id = 132-987-655
@@ -103,6 +108,7 @@ def from_config_file(cls, config_file: str = "config.ini", debug=None, enable_gz
103108 token = "my-token"
104109 org = "my-org"
105110 timeout = 6000
111+ connection_pool_maxsize = 25
106112
107113 [tags]
108114 id = "132-987-655"
@@ -137,18 +143,19 @@ def config_value(key: str):
137143 if config .has_option ('influx2' , 'ssl_ca_cert' ):
138144 ssl_ca_cert = config_value ('ssl_ca_cert' )
139145
146+ connection_pool_maxsize = None
147+ if config .has_option ('influx2' , 'connection_pool_maxsize' ):
148+ connection_pool_maxsize = config_value ('connection_pool_maxsize' )
149+
140150 default_tags = None
141151
142152 if config .has_section ('tags' ):
143153 tags = {k : v .strip ('"' ) for k , v in config .items ('tags' )}
144154 default_tags = dict (tags )
145155
146- if timeout :
147- return cls (url , token , debug = debug , timeout = int (timeout ), org = org , default_tags = default_tags ,
148- enable_gzip = enable_gzip , verify_ssl = _to_bool (verify_ssl ), ssl_ca_cert = ssl_ca_cert )
149-
150- return cls (url , token , debug = debug , org = org , default_tags = default_tags , enable_gzip = enable_gzip ,
151- verify_ssl = _to_bool (verify_ssl ), ssl_ca_cert = ssl_ca_cert )
156+ return cls (url , token , debug = debug , timeout = _to_int (timeout ), org = org , default_tags = default_tags ,
157+ enable_gzip = enable_gzip , verify_ssl = _to_bool (verify_ssl ), ssl_ca_cert = ssl_ca_cert ,
158+ connection_pool_maxsize = _to_int (connection_pool_maxsize ))
152159
153160 @classmethod
154161 def from_env_properties (cls , debug = None , enable_gzip = False ):
@@ -162,22 +169,25 @@ def from_env_properties(cls, debug=None, enable_gzip=False):
162169 - INFLUXDB_V2_TIMEOUT
163170 - INFLUXDB_V2_VERIFY_SSL
164171 - INFLUXDB_V2_SSL_CA_CERT
172+ - INFLUXDB_V2_CONNECTION_POOL_MAXSIZE
165173 """
166174 url = os .getenv ('INFLUXDB_V2_URL' , "http://localhost:8086" )
167175 token = os .getenv ('INFLUXDB_V2_TOKEN' , "my-token" )
168176 timeout = os .getenv ('INFLUXDB_V2_TIMEOUT' , "10000" )
169177 org = os .getenv ('INFLUXDB_V2_ORG' , "my-org" )
170178 verify_ssl = os .getenv ('INFLUXDB_V2_VERIFY_SSL' , "True" )
171179 ssl_ca_cert = os .getenv ('INFLUXDB_V2_SSL_CA_CERT' , None )
180+ connection_pool_maxsize = os .getenv ('INFLUXDB_V2_CONNECTION_POOL_MAXSIZE' , None )
172181
173182 default_tags = dict ()
174183
175184 for key , value in os .environ .items ():
176185 if key .startswith ("INFLUXDB_V2_TAG_" ):
177186 default_tags [key [16 :].lower ()] = value
178187
179- return cls (url , token , debug = debug , timeout = int (timeout ), org = org , default_tags = default_tags ,
180- enable_gzip = enable_gzip , verify_ssl = _to_bool (verify_ssl ), ssl_ca_cert = ssl_ca_cert )
188+ return cls (url , token , debug = debug , timeout = _to_int (timeout ), org = org , default_tags = default_tags ,
189+ enable_gzip = enable_gzip , verify_ssl = _to_bool (verify_ssl ), ssl_ca_cert = ssl_ca_cert ,
190+ connection_pool_maxsize = _to_int (connection_pool_maxsize ))
181191
182192 def write_api (self , write_options = WriteOptions (), point_settings = PointSettings ()) -> WriteApi :
183193 """
@@ -322,5 +332,9 @@ def update_request_body(self, path: str, body):
322332 return _body
323333
324334
325- def _to_bool (verify_ssl ):
326- return str (verify_ssl ).lower () in ("yes" , "true" )
335+ def _to_bool (bool_value ):
336+ return str (bool_value ).lower () in ("yes" , "true" )
337+
338+
339+ def _to_int (int_value ):
340+ return int (int_value ) if int_value is not None else None
0 commit comments