节点PostgreSQL客户端查询超时



我使用的是postgres(这里)的Node包pg:

npm i pg
var pg = require('pg');

我正在查询一个不属于我的大型集群,在某些条件下可能会失败。失败可能是不好的响应,但容易处理或无休止的查询。请注意,我不能在DB端引入更改[配置或其他]。

是否有办法为查询时间设置超时?我希望我的客户端在设定的时间后放弃,并返回超时错误。

在文档中找不到这样的东西。

提前感谢!

您可以在客户端设置statement_timeout:

const { Client } = require('pg')
const client = new Client({
  statement_timeout: 10000
})

或池中:

const { Pool } = require('pg')
const pool = new Pool({
  statement_timeout: 10000
})

最佳实践是使用init查询来设置会话的查询超时时间。

    SET statement_timeout TO 15000; # x milliseconds or 0 (turns off limitation)

该参数以毫秒为单位,用于会话。之后,当查询花费的时间超过指定的值时,您将从服务器收到一个错误。注意,这是用户请求的:

    ERROR:  Query (150) cancelled on user's request

还要注意,这实际上取消了服务器端的查询,从而减少了负载。

相关内容

  • 没有找到相关文章

最新更新