sqlalchemy报错: QueuePool limit of size 500 overflow 10 reached, connection timed out, timeout 30

本文详细介绍了SQLAlchemy在使用过程中遇到的QueuePool连接池大小和溢出限制错误,解释了连接池的工作原理以及默认配置。内容包括错误原因分析,如并发请求过多、连接未正确归还、长时间运行事务和死锁等,并提供了相应的解决策略,如调整连接池配置、确保连接及时关闭和避免长时间事务。
摘要由CSDN通过智能技术生成

检查日志的时候发现系统有一个报错。

QueuePool limit of size 500 overflow 10 reached, connection timed out, timeout 30

查阅官方文档

官方文档

这可能是最常见的运行时错误,因为它直接涉及到应用程序的工作量超过配置的限制,该限制通常适用于几乎所有SQLAlchemy应用程序。

以下几点总结了此错误的含义,首先从大多数SQLAlchemy用户应该已经熟悉的最基本点开始。

  • 默认情况下,SQLAlchemy Engine对象使用连接池 -这意味着当使用Engine对象的SQL数据库连接资源,然后释放该资源时,数据库连接本身仍保持与数据库的连接并返回给内部队列,可以再次使用它。即使代码看起来似乎正在结束与数据库的对话,在许多情况下,应用程序仍将保持固定数量的数据库连接,该连接将持续到应用程序结束或显式处置池为止。

  • 由于存在池,因此当应用程序使用SQL数据库连接时(通常是使用Engine.connect() ORM或使用ORM进行查询时)Session,此活动不一定会在连接对象创建时建立与数据库的新连接。获得 相反,它会向连接池咨询连接,该连接通常会从池中检索要重新使用的现有连接。如果没有可用的连接,则该池将创建一个新的数据库连接,但前提是该池尚未超过配置的容量。

  • 大多数情况下使用的默认池称为QueuePool。当您要求该池为您提供连接但没有可用连接时,如果正在使用的连接总数小于配置的值,它将创建一个新的连接。该值等于 池大小加上最大溢

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豆豆orz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值