more robust disposing of database session
avoid spamming the log with debug messages from libraries
This commit is contained in:
parent
be64961de5
commit
a836df9a5a
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -14,6 +14,7 @@ build/
|
||||||
*.egg-info/
|
*.egg-info/
|
||||||
.installed.cfg
|
.installed.cfg
|
||||||
*.egg
|
*.egg
|
||||||
|
.pylint.d
|
||||||
|
|
||||||
# calibre-web
|
# calibre-web
|
||||||
*.db
|
*.db
|
||||||
|
|
|
@ -64,6 +64,7 @@ lm.anonymous_user = ub.Anonymous
|
||||||
|
|
||||||
|
|
||||||
ub.init_db(cli.settingspath)
|
ub.init_db(cli.settingspath)
|
||||||
|
# pylint: disable=no-member
|
||||||
config = config_sql.load_configuration(ub.session)
|
config = config_sql.load_configuration(ub.session)
|
||||||
from . import db, services
|
from . import db, services
|
||||||
|
|
||||||
|
|
|
@ -27,10 +27,6 @@ import base64
|
||||||
import json
|
import json
|
||||||
import time
|
import time
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
# try:
|
|
||||||
# from imp import reload
|
|
||||||
# except ImportError:
|
|
||||||
# pass
|
|
||||||
|
|
||||||
from babel import Locale as LC
|
from babel import Locale as LC
|
||||||
from babel.dates import format_datetime
|
from babel.dates import format_datetime
|
||||||
|
|
|
@ -52,7 +52,7 @@ class _Settings(_Base):
|
||||||
config_random_books = Column(Integer, default=4)
|
config_random_books = Column(Integer, default=4)
|
||||||
config_authors_max = Column(Integer, default=0)
|
config_authors_max = Column(Integer, default=0)
|
||||||
config_read_column = Column(Integer, default=0)
|
config_read_column = Column(Integer, default=0)
|
||||||
config_title_regex = Column(String, default=u'^(A|The|An|Der|Die|Das|Den|Ein|Eine|Einen|Dem|Des|Einem|Eines)\s+')
|
config_title_regex = Column(String, default=r'^(A|The|An|Der|Die|Das|Den|Ein|Eine|Einen|Dem|Des|Einem|Eines)\s+')
|
||||||
config_log_level = Column(SmallInteger, default=logger.DEFAULT_LOG_LEVEL)
|
config_log_level = Column(SmallInteger, default=logger.DEFAULT_LOG_LEVEL)
|
||||||
config_access_log = Column(SmallInteger, default=0)
|
config_access_log = Column(SmallInteger, default=0)
|
||||||
config_uploading = Column(SmallInteger, default=0)
|
config_uploading = Column(SmallInteger, default=0)
|
||||||
|
@ -106,7 +106,6 @@ class _Settings(_Base):
|
||||||
|
|
||||||
# Class holds all application specific settings in calibre-web
|
# Class holds all application specific settings in calibre-web
|
||||||
class _ConfigSQL(object):
|
class _ConfigSQL(object):
|
||||||
# pylint: disable=no-member
|
|
||||||
def __init__(self, session):
|
def __init__(self, session):
|
||||||
self._session = session
|
self._session = session
|
||||||
self._settings = None
|
self._settings = None
|
||||||
|
@ -226,8 +225,14 @@ class _ConfigSQL(object):
|
||||||
|
|
||||||
if self.config_google_drive_watch_changes_response:
|
if self.config_google_drive_watch_changes_response:
|
||||||
self.config_google_drive_watch_changes_response = json.loads(self.config_google_drive_watch_changes_response)
|
self.config_google_drive_watch_changes_response = json.loads(self.config_google_drive_watch_changes_response)
|
||||||
self.db_configured = (self.config_calibre_dir and
|
|
||||||
(not self.config_use_google_drive or os.path.exists(self.config_calibre_dir + '/metadata.db')))
|
have_metadata_db = bool(self.config_calibre_dir)
|
||||||
|
if have_metadata_db:
|
||||||
|
if not self.config_use_google_drive:
|
||||||
|
db_file = os.path.join(self.config_calibre_dir, 'metadata.db')
|
||||||
|
have_metadata_db = os.path.isfile(db_file)
|
||||||
|
self.db_configured = have_metadata_db
|
||||||
|
|
||||||
logger.setup(self.config_logfile, self.config_log_level)
|
logger.setup(self.config_logfile, self.config_log_level)
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
|
@ -264,6 +269,7 @@ def _migrate_table(session, orm_class):
|
||||||
log.debug("%s: %s", column_name, err)
|
log.debug("%s: %s", column_name, err)
|
||||||
column_default = "" if column.default is None else ("DEFAULT %r" % column.default.arg)
|
column_default = "" if column.default is None else ("DEFAULT %r" % column.default.arg)
|
||||||
alter_table = "ALTER TABLE %s ADD COLUMN `%s` %s %s" % (orm_class.__tablename__, column_name, column.type, column_default)
|
alter_table = "ALTER TABLE %s ADD COLUMN `%s` %s %s" % (orm_class.__tablename__, column_name, column.type, column_default)
|
||||||
|
log.debug(alter_table)
|
||||||
session.execute(alter_table)
|
session.execute(alter_table)
|
||||||
changed = True
|
changed = True
|
||||||
|
|
||||||
|
|
14
cps/db.py
14
cps/db.py
|
@ -407,15 +407,13 @@ def setup_db(config):
|
||||||
def dispose():
|
def dispose():
|
||||||
global session
|
global session
|
||||||
|
|
||||||
engine = None
|
old_session = session
|
||||||
if session:
|
|
||||||
engine = session.bind
|
|
||||||
try: session.close()
|
|
||||||
except: pass
|
|
||||||
session = None
|
session = None
|
||||||
|
if old_session:
|
||||||
if engine:
|
try: old_session.close()
|
||||||
try: engine.dispose()
|
except: pass
|
||||||
|
if old_session.bind:
|
||||||
|
try: old_session.bind.dispose()
|
||||||
except: pass
|
except: pass
|
||||||
|
|
||||||
for attr in list(Books.__dict__.keys()):
|
for attr in list(Books.__dict__.keys()):
|
||||||
|
|
|
@ -97,15 +97,20 @@ def setup(log_file, log_level=None):
|
||||||
'''
|
'''
|
||||||
log_file = _absolute_log_file(log_file, DEFAULT_LOG_FILE)
|
log_file = _absolute_log_file(log_file, DEFAULT_LOG_FILE)
|
||||||
|
|
||||||
|
log_level = log_level or DEFAULT_LOG_LEVEL
|
||||||
|
logging.getLogger(__package__).setLevel(log_level)
|
||||||
|
|
||||||
r = logging.root
|
r = logging.root
|
||||||
r.setLevel(log_level or DEFAULT_LOG_LEVEL)
|
if log_level >= logging.INFO or os.environ.get('FLASK_DEBUG'):
|
||||||
|
# avoid spamming the log with debug messages from libraries
|
||||||
|
r.setLevel(log_level)
|
||||||
|
|
||||||
previous_handler = r.handlers[0] if r.handlers else None
|
previous_handler = r.handlers[0] if r.handlers else None
|
||||||
if previous_handler:
|
if previous_handler:
|
||||||
# if the log_file has not changed, don't create a new handler
|
# if the log_file has not changed, don't create a new handler
|
||||||
if getattr(previous_handler, 'baseFilename', None) == log_file:
|
if getattr(previous_handler, 'baseFilename', None) == log_file:
|
||||||
return
|
return
|
||||||
r.debug("logging to %s level %s", log_file, r.level)
|
logging.debug("logging to %s level %s", log_file, r.level)
|
||||||
|
|
||||||
if log_file == LOG_TO_STDERR:
|
if log_file == LOG_TO_STDERR:
|
||||||
file_handler = StreamHandler()
|
file_handler = StreamHandler()
|
||||||
|
|
14
cps/ub.py
14
cps/ub.py
|
@ -478,13 +478,11 @@ def init_db(app_db_path):
|
||||||
def dispose():
|
def dispose():
|
||||||
global session
|
global session
|
||||||
|
|
||||||
engine = None
|
old_session = session
|
||||||
if session:
|
|
||||||
engine = session.bind
|
|
||||||
try: session.close()
|
|
||||||
except: pass
|
|
||||||
session = None
|
session = None
|
||||||
|
if old_session:
|
||||||
if engine:
|
try: old_session.close()
|
||||||
try: engine.dispose()
|
except: pass
|
||||||
|
if old_session.bind:
|
||||||
|
try: old_session.bind.dispose()
|
||||||
except: pass
|
except: pass
|
||||||
|
|
Loading…
Reference in New Issue
Block a user