如何在ActiveRecord中设置mysql查询超时?我希望把它设置得很短,比如10-15ms。这是一个Sinatra ruby网络应用程序。如何为mysql设置ActiveRecord查询超时?
谢谢。
如何在ActiveRecord中设置mysql查询超时?我希望把它设置得很短,比如10-15ms。这是一个Sinatra ruby网络应用程序。如何为mysql设置ActiveRecord查询超时?
谢谢。
那么,它会出现这些每线29和30 mysql_adapter.rb,
@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秒的读取和写入超时。不幸的是,这不允许您设置亚秒超时。
你也可以将其设置在每个连接的基础是这样的:
ActiveRecord::Base.connection.instance_variable_get('@connection').instance_variable_set('@read_timeout', 0)
我这样做,例如有一个默认read_timeout,但覆盖它为我的长时间运行的夜间脚本。
我在[另一个问题中的回答](http://stackoverflow.com/a/37937788/316700)中有这方面的一些发现, – fguillen 2016-06-21 07:23:53