diff --git a/app/config.py.default b/app/config.py.default index 1eacb42..a5794df 100644 --- a/app/config.py.default +++ b/app/config.py.default @@ -26,6 +26,10 @@ class Settings(BaseSettings): DB['username'] = '' DB['password'] = '' SQLALCHEMY_DB_URI = 'mysql://'+DB['username']+':'+DB['password']+'@'+DB['server']+'/'+DB['name'] + + DB['wait_timeout'] = int(os.getenv('AE_DB_WAIT_TIMEOUT', 1800)) # default = 28800; Time (seconds) that the server waits for a connection to become active before closing it. + DB['connect_timeout'] = int(os.getenv('AE_DB_CONNECTION_TIMEOUT', 20)) # default = 10; Time (seconds) that the server waits for a connection to become active before closing it. + DB['pool_recycle'] = int(os.getenv('AE_DB_POOL_RECYCLE', 1800)) # default = ?; Related to SQLAlchemy # Aether API log files paths diff --git a/app/db_sql.py b/app/db_sql.py index 954b459..c793e0d 100644 --- a/app/db_sql.py +++ b/app/db_sql.py @@ -10,8 +10,12 @@ from sqlalchemy.exc import IntegrityError, OperationalError db_uri = settings.SQLALCHEMY_DB_URI +# log.setLevel(logging.DEBUG) +# log.debug(settings.DB) +# log.setLevel(logging.INFO) + connection_string = db_uri -engine = create_engine(url=connection_string, pool_size=3, max_overflow=15, pool_recycle=3600, pool_pre_ping=True, echo=False, echo_pool=True, isolation_level='READ COMMITTED', connect_args={'connect_timeout': 30}) +engine = create_engine(url=connection_string, pool_size=3, max_overflow=15, pool_recycle=settings.DB['pool_recycle'], pool_pre_ping=True, echo=False, echo_pool=True, isolation_level='READ COMMITTED', connect_args={'connect_timeout': settings.DB['connect_timeout']}) # NOTE: The default isolation_level is 'REPEATABLE READ'. This can sometimes not show updated data. # NOTE: The "echo" set to True option shows the SQL queries. @@ -55,7 +59,7 @@ def sql_connect( settings.SQLALCHEMY_DB_URI = 'mysql://'+DB['username']+':'+DB['password']+'@'+DB['server']+'/'+DB['name'] log.debug(settings.DB) - new_engine = create_engine(url=settings.SQLALCHEMY_DB_URI, pool_size=5, max_overflow=10, pool_recycle=3600, pool_pre_ping=True, echo=False, echo_pool=True, isolation_level='READ COMMITTED', connect_args={'connect_timeout': 30}) + new_engine = create_engine(url=settings.SQLALCHEMY_DB_URI, pool_size=5, max_overflow=10, pool_recycle=settings.DB['pool_recycle'], pool_pre_ping=True, echo=False, echo_pool=True, isolation_level='READ COMMITTED', connect_args={'connect_timeout': settings.DB['connect_timeout']}) current_db.engine = new_engine log.info(f'Created and connected to database: {settings.SQLALCHEMY_DB_URI}')