Remove useless reports, avoid DB-Races
This commit is contained in:
@@ -4,7 +4,7 @@ from contextlib import contextmanager
|
||||
from pathlib import Path
|
||||
from typing import Iterator
|
||||
|
||||
from sqlalchemy import create_engine, text
|
||||
from sqlalchemy import create_engine, event, text
|
||||
from sqlalchemy.orm import DeclarativeBase, Session, sessionmaker
|
||||
|
||||
from app.config import get_settings
|
||||
@@ -23,7 +23,24 @@ def _engine_url() -> str:
|
||||
return url
|
||||
|
||||
|
||||
engine = create_engine(_engine_url(), future=True, pool_pre_ping=True)
|
||||
def _connect_args(url: str) -> dict:
|
||||
if url.startswith("sqlite:"):
|
||||
return {"timeout": 60}
|
||||
return {}
|
||||
|
||||
|
||||
engine_url = _engine_url()
|
||||
engine = create_engine(engine_url, future=True, pool_pre_ping=True, connect_args=_connect_args(engine_url))
|
||||
|
||||
|
||||
@event.listens_for(engine, "connect")
|
||||
def _configure_sqlite(dbapi_connection, connection_record) -> None:
|
||||
if engine.url.get_backend_name() != "sqlite":
|
||||
return
|
||||
cursor = dbapi_connection.cursor()
|
||||
cursor.execute("PRAGMA busy_timeout=60000")
|
||||
cursor.execute("PRAGMA journal_mode=WAL")
|
||||
cursor.close()
|
||||
SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False, future=True)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user