diff --git a/.env.example b/.env.example index 2da2b00..57c654f 100644 --- a/.env.example +++ b/.env.example @@ -30,6 +30,8 @@ UVICORN_PORT = 8000 # HOME_PAGE_TEMPLATE="home/index.html" # SQLALCHEMY_DATABASE_URL = "sqlite:///db.sqlite3" +# SQLALCHEMY_CONNECTION_POOL_SIZE = 10 +# SQLALCHEMY_CONNECTION_MAX_OVERFLOW = -1 ### for developers # DOCS=true diff --git a/app/config/env.py b/app/config/env.py index a1aa701..cd5b34e 100755 --- a/app/config/env.py +++ b/app/config/env.py @@ -9,7 +9,12 @@ DASHBOARD_PATH = config("DASHBOARD_PATH", default="/dashboard/") SQLALCHEMY_DATABASE_URL = config( "SQLALCHEMY_DATABASE_URL", default="sqlite:///db.sqlite3" ) - +SQLALCHEMY_CONNECTION_POOL_SIZE = config( + "SQLALCHEMY_CONNECTION_POOL_SIZE", default=10, cast=int +) +SQLALCHEMY_CONNECTION_MAX_OVERFLOW = config( + "SQLALCHEMY_CONNECTION_MAX_OVERFLOW", default=-1, cast=int +) UVICORN_HOST = config("UVICORN_HOST", default="0.0.0.0") UVICORN_PORT = config("UVICORN_PORT", cast=int, default=8000) diff --git a/app/db/base.py b/app/db/base.py index ca9c952..77f8842 100644 --- a/app/db/base.py +++ b/app/db/base.py @@ -2,7 +2,11 @@ from sqlalchemy import create_engine from sqlalchemy.orm import declarative_base from sqlalchemy.orm import sessionmaker -from app.config.env import SQLALCHEMY_DATABASE_URL +from app.config.env import ( + SQLALCHEMY_DATABASE_URL, + SQLALCHEMY_CONNECTION_POOL_SIZE, + SQLALCHEMY_CONNECTION_MAX_OVERFLOW, +) IS_SQLITE = SQLALCHEMY_DATABASE_URL.startswith("sqlite") @@ -15,8 +19,8 @@ if IS_SQLITE: else: engine = create_engine( SQLALCHEMY_DATABASE_URL, - pool_size=10, - max_overflow=30, + pool_size=SQLALCHEMY_CONNECTION_POOL_SIZE, + max_overflow=SQLALCHEMY_CONNECTION_MAX_OVERFLOW, pool_recycle=3600, pool_timeout=10, )