【问题标题】:How do I set the ActiveRecord query timeout for mysql?如何为 mysql 设置 ActiveRecord 查询超时?
【发布时间】:2011-07-25 17:53:06
【问题描述】:

如何在 ActiveRecord 中设置 mysql 查询超时?我希望将其设置为非常短的值,例如 10-15 毫秒。这是针对 Sinatra ruby​​ 网络应用程序的。

谢谢。

【问题讨论】:

标签: mysql activerecord timeout


【解决方案1】:

好吧,根据 mysql_adapter.rb 中的这些第 29 和 30 行,

  @connection.options(Mysql::OPT_READ_TIMEOUT, @config[:read_timeout]) if @config[:read_timeout]
  @connection.options(Mysql::OPT_WRITE_TIMEOUT, @config[:write_timeout]) if @config[:write_timeout]

只需将 read_timeout 和 write_timeout 值添加到 .yaml 数据库配置文件即可。

因此,

development:
  adapter: mysql
  encoding: utf8
  database: app_development
  pool: 5
  username: root
  password: 
  write_timeout: 1
  read_timeout: 1

应该设置每个 1 秒的读取和写入超时。不幸的是,这不允许您设置亚秒级超时。

【讨论】:

    【解决方案2】:

    您也可以像这样在每个连接的基础上设置它:

    ActiveRecord::Base.connection.instance_variable_get('@connection').instance_variable_set('@read_timeout', 0)
    

    例如,我这样做是为了有一个默认的 read_timeout,但会为我长时间运行的夜间脚本覆盖它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 2011-09-15
      • 2011-09-23
      • 1970-01-01
      • 2011-07-30
      • 2016-02-26
      相关资源
      最近更新 更多