Better SQL connection settings

This commit is contained in:
Scott Idem
2023-07-12 13:46:27 -04:00
parent 236ef204eb
commit 9f99ca23ba
2 changed files with 10 additions and 2 deletions

View File

@@ -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

View File

@@ -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}')