如何在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