diff --git 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
@@ -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
@@ -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,
)