检查日志的时候发现系统有一个报错。
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。当您要求该池为您提供连接但没有可用连接时,如果正在使用的连接总数小于配置的值,它将创建一个新的连接。该值等于 池大小加上最大溢