fix: disable autoconnect and set pool timeout on PooledPostgresqlDatabase (#80)
All checks were successful
Build Docker Image / build (pull_request) Successful in 2m8s
All checks were successful
Build Docker Image / build (pull_request) Successful in 2m8s
- Set timeout=5 so pool exhaustion surfaces as an error instead of hanging forever - Set autoconnect=False to require explicit connection acquisition - Add HTTP middleware in main.py to open/close connections per request Closes #80 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
da679b6d1a
commit
8904db8453
@ -23,8 +23,8 @@ if DATABASE_TYPE.lower() == 'postgresql':
|
||||
port=int(os.environ.get('POSTGRES_PORT', '5432')),
|
||||
max_connections=20,
|
||||
stale_timeout=300, # 5 minutes
|
||||
timeout=0,
|
||||
autoconnect=True,
|
||||
timeout=5,
|
||||
autoconnect=False,
|
||||
autorollback=True # Automatically rollback failed transactions
|
||||
)
|
||||
else:
|
||||
|
||||
13
app/main.py
13
app/main.py
@ -7,6 +7,8 @@ from fastapi import Depends, FastAPI, Request
|
||||
from fastapi.openapi.docs import get_swagger_ui_html
|
||||
from fastapi.openapi.utils import get_openapi
|
||||
|
||||
from .db_engine import db
|
||||
|
||||
# from fastapi.openapi.docs import get_swagger_ui_html
|
||||
# from fastapi.openapi.utils import get_openapi
|
||||
|
||||
@ -67,6 +69,17 @@ app = FastAPI(
|
||||
)
|
||||
|
||||
|
||||
@app.middleware("http")
|
||||
async def db_connection_middleware(request: Request, call_next):
|
||||
db.connect(reuse_if_open=True)
|
||||
try:
|
||||
response = await call_next(request)
|
||||
finally:
|
||||
if not db.is_closed():
|
||||
db.close()
|
||||
return response
|
||||
|
||||
|
||||
logger.info(f"Starting up now...")
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user