feat(payment): expire pending orders after one hour
This commit is contained in:
@@ -22,7 +22,11 @@ import routers.takeover
|
||||
from responses import ok
|
||||
from services.chat_attachment_service import purge_expired_chat_attachments
|
||||
from services.knowledge_vectorizer import knowledge_vectorizer
|
||||
from services.token_billing import DEFAULT_TOKEN_GRANT, release_stale_reservations
|
||||
from services.token_billing import (
|
||||
DEFAULT_TOKEN_GRANT,
|
||||
close_expired_pending_orders,
|
||||
release_stale_reservations,
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -255,10 +259,24 @@ def purge_expired_chat_attachments_job():
|
||||
db.close()
|
||||
|
||||
|
||||
def close_expired_pending_orders_job():
|
||||
db = SessionLocal()
|
||||
try:
|
||||
count = close_expired_pending_orders(db)
|
||||
if count:
|
||||
logger.info("Closed %s expired pending token payment order(s)", count)
|
||||
except Exception as exc:
|
||||
db.rollback()
|
||||
logger.warning("Failed to close expired token payment orders: %s", exc)
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
def start_maintenance_scheduler():
|
||||
global maintenance_scheduler
|
||||
|
||||
purge_expired_chat_attachments_job()
|
||||
close_expired_pending_orders_job()
|
||||
interval_minutes = max(
|
||||
5, min(1440, int(os.getenv("CHAT_ATTACHMENT_CLEANUP_MINUTES", "60")))
|
||||
)
|
||||
@@ -270,6 +288,13 @@ def start_maintenance_scheduler():
|
||||
max_instances=1,
|
||||
coalesce=True,
|
||||
)
|
||||
maintenance_scheduler.add_job(
|
||||
close_expired_pending_orders_job,
|
||||
trigger=IntervalTrigger(minutes=1),
|
||||
id="close_expired_token_orders",
|
||||
max_instances=1,
|
||||
coalesce=True,
|
||||
)
|
||||
maintenance_scheduler.start()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user