From: Michael Tremer Date: Fri, 6 Oct 2017 17:02:59 +0000 (+0100) Subject: Initialise database connection only when we need it X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5c8b4bfd199a128c2a6d47b58bcb18af3530c3dc;p=pbs.git Initialise database connection only when we need it Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/__init__.py b/src/buildservice/__init__.py index ad2790a6..ab3a194e 100644 --- a/src/buildservice/__init__.py +++ b/src/buildservice/__init__.py @@ -27,6 +27,7 @@ from . import updates from . import uploads from . import users +from .decorators import * from .constants import * class Backend(object): @@ -35,7 +36,6 @@ class Backend(object): self.config = self.read_config(config_file) # Connect to databases. - self.db = self.connect_database() self.geoip_db = self.connect_database("geoip-database") # Global pakfire settings (from database). @@ -65,17 +65,16 @@ class Backend(object): # A pool to store strings (for comparison). self.pool = pakfire.satsolver.Pool("dummy") - def __del__(self): - if self.db: - self.db.close() - del self.db - def read_config(self, path): c = ConfigParser.SafeConfigParser() c.read(path) return c + @lazy_property + def db(self): + return self.connect_database() + def connect_database(self, section="database"): db = self.config.get(section, "db") host = self.config.get(section, "host") diff --git a/src/buildservice/base.py b/src/buildservice/base.py index 9a674ce0..a69306f3 100644 --- a/src/buildservice/base.py +++ b/src/buildservice/base.py @@ -12,9 +12,6 @@ class Object(object): def __init__(self, backend, *args, **kwargs): self.backend = backend - # Shortcut to the database. - self.db = self.backend.db - # Shortcut to settings. if hasattr(self.pakfire, "settings"): self.settings = self.backend.settings @@ -28,6 +25,13 @@ class Object(object): """ pass + @lazy_property + def db(self): + """ + Shortcut to database + """ + return self.backend.db + @lazy_property def pakfire(self): """