我正在为客户端构建一个API,该API可同时接收多个请求。每个请求都需要访问PostgreSQL数据库,因此我使用连接池来处理并发请求。
现在,发生这种情况的情况是有时客户端超过一周左右都没有发送请求。在这种情况下,我不希望由于超时(由于空闲连接)而关闭连接。
我正在使用SQLAlchemy API来处理数据库连接和池,并且在&name=sYmbol.Name(D:0x100)
方法中看到一个pool_timeout
参数,该参数逐字引用,“之前等待的秒数放弃从池中获得连接。”
是否可以通过为此参数设置值(例如-1)来使超时超时(即禁用超时)?我在文档中找不到任何内容。
答案 0 :(得分:0)
我今天仔细研究了一下,发现在后台,超时最终传递给了Queue对象(https://github.com/sqlalchemy/sqlalchemy/blob/master/lib/sqlalchemy/pool/impl.py#L97,https://github.com/sqlalchemy/sqlalchemy/blob/master/lib/sqlalchemy/pool/impl.py#L117),如果将timeout设置为,它将永远阻塞无:
如果可选参数
block
为True且timeout
为None( 默认值),如有必要,请阻止直到有可用的商品为止。如果timeout
是一个正数,最多可阻止timeout
秒,如果没有项目则引发Empty
异常 在该时间内可用。否则(block
为假), 如果有货马上退货,否则提高Empty
例外(在这种情况下,timeout
被忽略)。