我正在使用RestClient gem来执行API请求。 我想知道执行该请求需要多长时间。
responseObject = RestClient.post request_url,params[:request_body],:content_type => params[:content_type]
responseObject.code
现在我怎样才能获得执行时间。
答案 0 :(得分:2)
为此目的使用benchmark。
require "benchmark"
time = Benchmark.measure do
responseObject = RestClient.post request_url,params[:request_body],:content_type => params[:content_type]
end
其他原始方式:
beginning_time = Time.now
responseObject = RestClient.post request_url,params[:request_body],:content_type => params[:content_type]
end_time = Time.now
puts "Time elapsed #{(end_time - beginning_time)*1000} milliseconds"
答案 1 :(得分:2)
alias_method_chain在这里很有用。
由于RestClient
使用名为Request的类来执行所有api请求(请参阅源代码here),因此您可以在初始化程序中将此代码段添加到rails项目中。只需在您的环境配置中添加config.debug_rest_client_duration = true
即可。
class RestClient::Request
class << self
def execute_with_log_duration(args, &block)
started = Time.now
res = execute_without_log_duration(args, &block)
Rails.logger.info "api call duration is: " + (Time.now - started).to_s + " seconds"
return res
end
alias_method_chain :execute, :log_duration if Rails.application.config.debug_rest_client_duration
end
end