Skip to content

Commit f0a7643

Browse files
committed
🐛 fix(inspect): Use null pool for async engine (#2998)
🐛 fix(inspect): Fix unable to start train job
1 parent 7653915 commit f0a7643

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

application/backend/src/db/engine.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,16 @@
1515
from db.schema import Base
1616
from settings import get_settings
1717

18-
DATABASE_URL = "sqlite+aiosqlite:///.inspect.db"
1918
settings = get_settings()
2019

21-
async_engine = create_async_engine(DATABASE_URL, echo=False)
20+
async_engine = create_async_engine(
21+
settings.database_url,
22+
connect_args={"check_same_thread": False, "timeout": 30},
23+
# Using NullPool to disable connection pooling, which is necessary for SQLite when using multiprocessing
24+
# https://docs.sqlalchemy.org/en/20/core/pooling.html#using-connection-pools-with-multiprocessing-or-os-fork
25+
poolclass=NullPool,
26+
echo=settings.db_echo,
27+
)
2228
async_session = async_sessionmaker(async_engine, expire_on_commit=False)
2329

2430
sync_engine = create_engine(

application/backend/src/settings.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ class Settings(BaseSettings):
3131

3232
# Database
3333
database_url: str = Field(
34-
default="sqlite:///./data/geti_inspect.db", alias="DATABASE_URL", description="Database connection URL"
34+
default="sqlite+aiosqlite:///./data/geti_inspect.db?journal_mode=WAL",
35+
alias="DATABASE_URL",
36+
description="Database connection URL",
3537
)
3638
db_echo: bool = Field(default=False, alias="DB_ECHO")
3739

0 commit comments

Comments
 (0)