栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

pg-promise中的查询超时

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pg-promise中的查询超时

来自pg-promise的作者…


pg-promise不支持查询取消,因为它可以解决数据库设计错误或查询执行不正确的问题。

PostgreSQL支持在执行耗时的查询时应使用的事件,因此无需等待,可以将事件侦听器设置为在特定数据/视图可用时触发。请参阅“
侦听/提示”示例。

您可以使用自己的自定义查询方法扩展pg-promise,该方法将因拒绝而超时(请参见下面的示例),但这又是解决设计问题的另一种方法。

使用Bluebird的示例:

const Promise = require('bluebird');Promise.config({    cancellation: true});const initOptions = {    promiseLib: Promise,    extend(obj) {        obj.queryTimeout = (query, values, delay) => { return obj.any(query, values).timeout(delay);        }    }};const pgp = require('pg-promise')(initOptions);const db = pgp();

然后,您可以

db.queryTimeout(query, values, delay)
在每个级别上使用。

另外,如果您使用的是Bluebird,则可以链接

.timeout(delay)
到任何现有方法:

db.any(query, values)    .timeout(500)    .then(data => {})    .catch(error => {})

也可以看看:

  • 扩展事件
  • Bluebird.timeout

更新

从8.5.3版开始,pg-
promise
开始通过

query_timeout
连接对象内的属性支持查询超时。

您可以覆盖默认值:

pgp.pg.defaults.query_timeout = 3000; // timeout every query after 3 seconds

或在连接对象中指定它:

const db = pgp({        query_timeout: 3000});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446515.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号