sqlalchemy.pool.QueuePool Invalidate connection 问题解决

背景

最近在写个项目的时候使用了sqlalchemy的ORM框架进行对数据库的接口书写,然后在写一个删除后自增id重设再添加的小接口时遇到了点问题。

问题一:session或者connection连接溢出,解决

engine = create_engine(“mysql+pymysql://root:password@localhost:3306/db?charset=utf8”, pool_size=5, max_overflow=3, echo_pool=True)
这是我们常用的engine连接数据库的连接池,在这里我们的pool_size指的是连接池的并发连接数,也就是你在进行处理mysql数据库语句时的session的基本连接数。而max_overflow则是你的最大溢出量,假如在进行并发处理事务时你的session连接量大于 pool_size+max_overflow 的量,那么你的进程就会被锁死,就会出现connection time out的连接超时问题

解决方法: 对max_overflow 或者 pool_size进行数量上的增大即可解决。

问题二: session的占用问题

这个问题如果没解决也是很头疼的,因为这个问题利用上一种方法解决并不可靠,甚至没用。摸索着,我看到了一点曙光,之前在做另一个项目的时候曾经有过session的占用导致数据库过了8小时就不能够进行sqlalchemy的连接,找出原因就是session的占用没用关闭。

解决方法: 每一个session进程都要先close后再进行其他session进程的事务,这样在同个session的调用中就不会出现占用的问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值