fix: 物流签收检查异常后未rollback导致PendingRollbackError

check_delivery_by_tracking 内部捕获 SQLAlchemyError 后仅打日志,未调用 session.rollback(),导致 session 处于 invalid 状态,外层 scheduler 的 session.commit() 触发 PendingRollbackError。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
wsb1224 2026-07-04 14:54:19 +08:00
parent d501a8fed1
commit 394a583ed3

View File

@ -1670,10 +1670,13 @@ class LogisticsService:
break
except Exception as e:
logger.warning("[物流签收检查] 订单 %s (单号: %s) 检查失败: %s", order.order_no, order.tracking_number or "未填写", e)
if isinstance(e, SQLAlchemyError):
session.rollback()
continue
except SQLAlchemyError as e:
logger.error("检查物流状态数据库异常: %s", e)
session.rollback()
def _update_order_to_delivered(self, session: Session, order) -> None:
"""将订单状态更新为已送达,并同步相关数据。