aboutsummaryrefslogtreecommitdiff
path: root/server/api/bids.py
diff options
context:
space:
mode:
Diffstat (limited to 'server/api/bids.py')
-rw-r--r--server/api/bids.py21
1 files changed, 20 insertions, 1 deletions
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