如何在 Sequelize 中设置查询超时



我想看看如何在 Sequelize 中设置查询的超时时间。

我已经查看了 Sequelize 文档以获取一些信息,但我无法完全找到我正在寻找的内容。我找到的最接近的是"pools.acquire"选项,但我不想设置传入连接的超时,而是设置正在进行的查询的超时,以便我可以快速短路死锁。

http://docs.sequelizejs.com/class/lib/sequelize.js~Sequelize.html

这是我的示例代码:

const db = new Sequelize( database, username, password, {
  host   : hostname,
  dialect: "mysql",
  define : {},
  pool: {
    max : 10,
    min : 0,
    idle: 10000
  },
})

任何见解将不胜感激!

添加dialectOptions

  const db2 = new Sequelize(database, username, password, {
    host: hostname,
    dialect: "mysql",
    define: {},
    dialectOptions: {
      options: {
        requestTimeout: 3000
      }
    },
    pool: {
      max: 10,
      min: 0,
      idle: 10000
    },
  });

如果有人在这里偶然寻找 Postgres 特定的配置(即 node-postgres(来查询超时,那么在 sequelize v5 中看起来像这样:

dialectOptions: {
  statement_timeout: 1000,
  idle_in_transaction_session_timeout: 5000
}

这会将statement_timeout设置为 1,idle_in_transaction_session_timeout设置为 5s。参考 https://github.com/sequelize/sequelize/blob/master/src/dialects/postgres/connection-manager.js

一些node-postgres(即 require('pg') ( 配置选项re:超时包括:

  • statement_timeout ?:数字,//查询中的语句超时之前的毫秒数,默认值为无超时
  • query_timeout ?:数字,//查询调用超时前的毫秒数,默认值为无超时
  • connectionTimeoutMillis ?:数字,//等待连接的毫秒数,默认为无超时
  • idle_in_transaction_session_timeout ?:数字//终止任何具有打开空闲事务的会话之前的毫秒数,默认值为无超时

对于 Sequelize v6 和 mysql2 驱动程序,以下代码正在工作,

export const database = new Sequelize(
    Config.get('DB.NAME'),
    Config.get('DB.USER'),
    Config.get('DB.PASS'),
    {
        host: Config.get('DB.HOST'),
        port: 3306,
        dialect: 'mysql',
        dialectOptions: { connectTimeout: isDevEnv ? 15000 : 5000 }
    });
    

就我而言,它可以直接将requestTimeout字段添加到dialectOptions对象中:

const db2 = new Sequelize(database, username, password, {
  host: hostname,
  dialect: "mysql",
  define: {},
  dialectOptions: {
    requestTimeout: 3000
  },
  pool: {
    max: 10,
    min: 0,
    idle: 10000
  }
});

续集版本:^4.42.0

我遇到了同样的问题,但我使用我的 http://localhost:8888 作为我的端口,直到我将端口更改为我的MySQL端口8889,除了最后一个数字之外,它看起来是一样的,我没有太注意看到区别,在使用MAMP时,您需要检查显示端口和主机的MySQL服务器详细信息的网页。

打开本地文件node_modules/_mysql@2.17.1@mysql/lib/ConnectionConfig.js

更改this.connectTimeout的默认值,如下所示:

  this.connectTimeout     = (options.connectTimeout === undefined)
    ? (10 * 10000)
    : options.connectTimeout;

相关内容

  • 没有找到相关文章

最新更新