kisa-utils 0.42.5__py3-none-any.whl → 0.42.6__py3-none-any.whl

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.
kisa_utils/db.py CHANGED
@@ -7,6 +7,7 @@ import inspect
7
7
  import traceback
8
8
  import re
9
9
  from threading import get_native_id as getCurrentThreadId, Lock
10
+ import random, time
10
11
 
11
12
  from . import storage
12
13
  from . import codes
@@ -142,6 +143,7 @@ class Api:
142
143
  accessFromMultipleThreads:bool = False,
143
144
  useWALMode:bool = True,
144
145
  returnKISAResponse:bool|None = None,
146
+ connectionTimeout:float = 30.0
145
147
  ):
146
148
  '''
147
149
  attempt to open an sqlite3 database connection object/instance
@@ -238,9 +240,21 @@ class Api:
238
240
 
239
241
  self._readonly = True if readonly else False
240
242
 
241
- self.db:sqlite3.Connection = sqlite3.connect(path)
243
+ self.db:sqlite3.Connection
244
+
245
+ max_retries = 4
246
+ for attempt in range(max_retries):
247
+ try:
248
+ self.db = sqlite3.connect(path, check_same_thread = not accessFromMultipleThreads, timeout=connectionTimeout)
249
+ break
250
+ except sqlite3.OperationalError as e:
251
+ if attempt == max_retries - 1:
252
+ raise # Re-raise on final attempt
253
+
254
+ wait_time = (2 ** attempt) + random.uniform(0, 1) # Exponential backoff with jitter
255
+ print(f"Database connection attempt {attempt + 1} failed: {e}. Retrying in {wait_time:.2f}s...")
256
+ time.sleep(wait_time)
242
257
 
243
- self.db = sqlite3.connect(path, check_same_thread = not accessFromMultipleThreads)
244
258
  if useWALMode:
245
259
  self.db.executescript(f'''
246
260
  /* set journal mode to WAL and `synchronous` to best value, which works best for WAL mode*/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kisa-utils
3
- Version: 0.42.5
3
+ Version: 0.42.6
4
4
  Summary: Utility functions and modules for KISA Developers
5
5
  Author: Tom Bukenya
6
6
  Author-email: glayn2bukman@gmail.com
@@ -4,7 +4,7 @@ kisa_utils/codes.py,sha256=PV_S53Skggf4XetOdYoIKtEmM8cpN5wZwUlxje70WZY,904
4
4
  kisa_utils/config.py,sha256=NfluzGKTh66qfNtC-Ae0zNb1XzMTgU2Me9Vi82R9c1E,2285
5
5
  kisa_utils/dataStructures.py,sha256=ZgLpttJ66jfpU1NWzLDD1Czqxzj6sWereffgTQWhlV8,2679
6
6
  kisa_utils/dates.py,sha256=zxe4n0PdKReZjK5ZkvnCZtJ55lk5oqu9oS8VX_nLozw,13966
7
- kisa_utils/db.py,sha256=hWxkW21lgViOqFijxL4cD-Wpt4koWz6jzcE1v0IiT1c,54341
7
+ kisa_utils/db.py,sha256=-0Q7iw9VEtf4oyOIj_IhJqmzeh0CZVp3vEcwIQn4Zls,54939
8
8
  kisa_utils/encryption.py,sha256=nFzNpzWV_D9uSEq4FsgCnlS7FQtqWP9fvM_81rsfcLo,4218
9
9
  kisa_utils/figures.py,sha256=pYIpQzu1OXRSsY1d98GhgPifnIRmgl-r7S32ai-Ms0c,3731
10
10
  kisa_utils/functionUtils.py,sha256=PlXjnmU1uJWNdISlJJ3SCgavTsgNBoebaa9dtWSFhRA,6553
@@ -27,7 +27,7 @@ kisa_utils/servers/flask.py,sha256=XZYY1pWnP1mSvaS5Uv8G3EFJV5BJBQtU2gDbO8suvLc,4
27
27
  kisa_utils/structures/__init__.py,sha256=JBU1j3A42jQ62ALKnsS1Hav9YXcYwjDw1wQJtohXPbU,83
28
28
  kisa_utils/structures/utils.py,sha256=665rXIapGwFqejizeJwy3DryeskCQOdgP25BCdLkGvk,2898
29
29
  kisa_utils/structures/validator.py,sha256=JhD9jcfbjTwBr_7OfuNaJd_cYr7wR2emFhsCEo5MCHQ,4323
30
- kisa_utils-0.42.5.dist-info/METADATA,sha256=IIKhQyNwq2RzoGPo4O8tm_zjYGOYlCgdh4qV94uSlLc,477
31
- kisa_utils-0.42.5.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
32
- kisa_utils-0.42.5.dist-info/top_level.txt,sha256=GFOLXZYqpBG9xtscGa2uGJAEiZ5NwsqHBH9NylnB29M,11
33
- kisa_utils-0.42.5.dist-info/RECORD,,
30
+ kisa_utils-0.42.6.dist-info/METADATA,sha256=Dyk0-x1A4skPorhBkLVW6Dwf2Qs7WgilsaMlLR3mXTE,477
31
+ kisa_utils-0.42.6.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
32
+ kisa_utils-0.42.6.dist-info/top_level.txt,sha256=GFOLXZYqpBG9xtscGa2uGJAEiZ5NwsqHBH9NylnB29M,11
33
+ kisa_utils-0.42.6.dist-info/RECORD,,