拆镜复刻开发完成
This commit is contained in:
@@ -4,6 +4,7 @@ import os
|
||||
from sqlalchemy import DateTime, func
|
||||
from sqlalchemy.ext.asyncio import AsyncAttrs, async_sessionmaker, create_async_engine
|
||||
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
|
||||
from sqlalchemy.pool import NullPool
|
||||
|
||||
from app.config import settings
|
||||
|
||||
@@ -18,14 +19,18 @@ engine_kwargs = {
|
||||
"pool_pre_ping": True,
|
||||
}
|
||||
|
||||
# SQLite 本地调试时不要乱塞 pool_size/max_overflow,PostgreSQL/asyncpg 才建议配置
|
||||
# SQLite 本地调试时不要乱塞 pool_size/max_overflow,PostgreSQL/asyncpg 才建议配置。
|
||||
# 默认保持 Celery 连接池复用;只有显式开启 CELERY_DB_USE_NULLPOOL=true 时才降级 NullPool。
|
||||
if _is_celery_process() and not settings.DATABASE_URL.startswith("sqlite"):
|
||||
engine_kwargs.update(
|
||||
pool_size=settings.CELERY_DB_POOL_SIZE,
|
||||
max_overflow=settings.CELERY_DB_MAX_OVERFLOW,
|
||||
pool_timeout=settings.CELERY_DB_POOL_TIMEOUT,
|
||||
pool_recycle=settings.CELERY_DB_POOL_RECYCLE,
|
||||
)
|
||||
if bool(getattr(settings, "CELERY_DB_USE_NULLPOOL", False)):
|
||||
engine_kwargs.update(poolclass=NullPool)
|
||||
else:
|
||||
engine_kwargs.update(
|
||||
pool_size=settings.CELERY_DB_POOL_SIZE,
|
||||
max_overflow=settings.CELERY_DB_MAX_OVERFLOW,
|
||||
pool_timeout=settings.CELERY_DB_POOL_TIMEOUT,
|
||||
pool_recycle=settings.CELERY_DB_POOL_RECYCLE,
|
||||
)
|
||||
|
||||
engine = create_async_engine(settings.DATABASE_URL, **engine_kwargs)
|
||||
|
||||
@@ -63,4 +68,4 @@ async def init_database() -> None:
|
||||
|
||||
|
||||
async def close_database() -> None:
|
||||
await engine.dispose()
|
||||
await engine.dispose()
|
||||
|
||||
Reference in New Issue
Block a user