节点 PostgreSQL 超时客户端的查询
Node PostgreSQL timeout a query by the client
我正在为 postgres (here) 使用节点包 pg
:
npm i pg
var pg = require('pg');
我正在查询一个不属于我的大型集群,在某些情况下可能会失败。失败可能是易于处理的不良响应或无休止的查询。
请注意,我无法在数据库端引入更改[配置或其他方式]。
有什么办法可以设置查询超时时间吗?
我希望我的客户在设定的时间后放弃,并且 return 超时错误。
无法在文档中找到任何此类内容。
提前致谢!
最佳做法是使用初始查询来设置会话的查询超时。
SET statement_timeout TO 15000; # x milliseconds or 0 (turns off limitation)
这需要以毫秒为单位的超时参数,并应用于会话。
之后,当查询花费的时间超过指定的值时,您将从服务器收到错误消息。请注意,这是 根据用户的要求:
ERROR: Query (150) cancelled on user's request
另请注意,这实际上取消了服务器端的查询,减少了负载。
您可以在客户端设置statement_timeout
:
const { Client } = require('pg')
const client = new Client({
statement_timeout: 10000
})
或在池中:
const { Pool } = require('pg')
const pool = new Pool({
statement_timeout: 10000
})
我正在为 postgres (here) 使用节点包 pg
:
npm i pg
var pg = require('pg');
我正在查询一个不属于我的大型集群,在某些情况下可能会失败。失败可能是易于处理的不良响应或无休止的查询。 请注意,我无法在数据库端引入更改[配置或其他方式]。
有什么办法可以设置查询超时时间吗? 我希望我的客户在设定的时间后放弃,并且 return 超时错误。
无法在文档中找到任何此类内容。
提前致谢!
最佳做法是使用初始查询来设置会话的查询超时。
SET statement_timeout TO 15000; # x milliseconds or 0 (turns off limitation)
这需要以毫秒为单位的超时参数,并应用于会话。 之后,当查询花费的时间超过指定的值时,您将从服务器收到错误消息。请注意,这是 根据用户的要求:
ERROR: Query (150) cancelled on user's request
另请注意,这实际上取消了服务器端的查询,减少了负载。
您可以在客户端设置statement_timeout
:
const { Client } = require('pg')
const client = new Client({
statement_timeout: 10000
})
或在池中:
const { Pool } = require('pg')
const pool = new Pool({
statement_timeout: 10000
})