From 96715ca3ce3817690ac7e4db3fee6062089956c1 Mon Sep 17 00:00:00 2001 From: Navan Chauhan Date: Mon, 28 Apr 2025 00:10:57 -0600 Subject: WAL & retry --- server/api/bids.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'server/api') diff --git a/server/api/bids.py b/server/api/bids.py index c08c74b..c9d2ebd 100644 --- a/server/api/bids.py +++ b/server/api/bids.py @@ -1,5 +1,7 @@ from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session +from sqlalchemy.exc import OperationalError +import time from db import SessionLocal from models.bid import Bid as BidModel from models.auth import User @@ -111,6 +113,23 @@ def submit_bid(bid: BidCreate, db: Session = Depends(get_db)): pnl=None, ) db.add(db_bid) - db.commit() + max_retries = 3 + + for attempt in range(max_retries): + try: + db.commit() + break + except OperationalError as e: + if "database is locked" in str(e).lower(): + if attempt < max_retries - 1: + time.sleep(2) + continue + else: + raise HTTPException( + status_code=500, + detail="Database is busy. Please try again later.", + ) + else: + raise db.refresh(db_bid) return db_bid -- cgit v1.2.3