11# app/service/driver_service.py
22import importlib
3+ import logging
34import os
45import sqlite3
56
67from app .core .exceptions import APIException
78from app .core .status import CommonCode
89from app .schemas .driver .driver_info_model import DriverInfo
910
11+ logger = logging .getLogger (__name__ )
12+
1013
1114class DriverService :
1215 def read_driver_info (self , driver_info : DriverInfo ):
@@ -15,16 +18,29 @@ def read_driver_info(self, driver_info: DriverInfo):
1518
1619 if driver_name == "sqlite3" :
1720 version = sqlite3 .sqlite_version
18- path = sqlite3 .__file__
19-
21+ try :
22+ path = sqlite3 .__file__
23+ size = os .path .getsize (path ) if path else None
24+ except (TypeError , OSError ) as e :
25+ logger .exception (f"Driver import failed: { driver_info .driver_name } " )
26+ logger .exception (f"error: { e } " )
27+ path , size = None , None
2028 else :
2129 mod = importlib .import_module (driver_name )
2230 version = getattr (mod , "__version__" , None )
23- path = getattr (mod .__spec__ , "origin" , None )
31+ spec = getattr (mod , "__spec__" , None )
32+ path = getattr (spec , "origin" , None ) if spec else None
33+ try :
34+ size = os .path .getsize (path ) if path and os .path .exists (path ) else None
35+ except OSError as e :
36+ logger .exception (f"Driver import failed: { driver_info .driver_name } " )
37+ logger .exception (f"error: { e } " )
38+ size = None
2439
25- size = os .path .getsize (path ) if path else None
2640 return driver_info .update_from_module (version , size )
2741 except (ModuleNotFoundError , AttributeError , OSError ) as e :
42+ logger .exception (f"Driver import failed: { driver_info .driver_name } " )
43+ logger .exception (f"error: { e } " )
2844 raise APIException (CommonCode .FAIL ) from e
2945
3046
0 commit comments