ruby-on-rails-3 - Rails 方法运行设置超时 - 确定方法中的线程 "stays"多长时间

标签 ruby-on-rails-3 methods timeout

我有一个任务要做很多事情,其中​​一些可能会“阻塞”,因为它调用了外部 API。

我的问题:是否可以确定 RailsThread 在方法中“停留”多长时间?依此类推,如果花费太长时间,则会中断它或重新加载。问题是没有错误,所以我不能做救援之类的事情。

我想做的伪代码:

def aMethod
  #doSomethingThatCanBlock
  if takeMoreThan1000ms
    #reloadMethod or break
  end
end

最佳答案

require 'timeout'

def a_method(iterations)
  Timeout::timeout(1) do # 1 second
    iterations.times { |i| print("#{i} "); sleep(0.1) }
  end
rescue Timeout::Error
  print("TIMEOUT")
ensure
  puts
end

还有一个例子:

irb(main):012:0> a_method(3)
0 1 2 
=> 3
irb(main):013:0> a_method(30)
0 1 2 3 4 5 6 7 8 9 TIMEOUT
=> nil

关于ruby-on-rails-3 - Rails 方法运行设置超时 - 确定方法中的线程 "stays"多长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13973411/

相关文章:

ruby-on-rails - 如何将 Tire (elasticsearch) 中的 facet 添加到 has_many 关联

ruby-on-rails - Rails路由约束和UTF-8

language-agnostic - 在 .NET 中重构大型方法

java - 如何在 Java 中设置 Windows 通知图标出现的时间长度

java - 套接字的连接和读取超时有什么区别?

ruby-on-rails - 在heroku上为rails 3.1应用程序启用浏览器端缓存

ruby-on-rails - 理想的 Rails 服务器

java - 如何在 Java 中的 Switch Case 中调用多个方法

javascript - 如何停止间隔?

ruby-on-rails-3 - 如何在 Heroku 应用程序上处理大文件?