系统调用中ruby中嵌套超时的问题

时间:2011-03-01 11:10:37

标签: ruby-on-rails ruby multithreading timeout

我在使用ruby(在rails上)超时时遇到了这个奇怪的问题。这次超时

timeout(10) do
 //some code involving http calls that takes more than 10 seconds
end

无效。但这个超时

timeout(20) do
 timeout(10) do
   //some code involving http calls that takes more than 10 seconds
 end
end
20秒后

超时。我读到如果涉及系统调用,ruby中的超时将无法正常工作。如果是这种情况,那么任何数量的嵌套超时也应该不起作用。为什么这会在第二次超时时起作用?

btw ..我提到的链接 http://ph7spot.com/musings/system-timer

提前致谢

1 个答案:

答案 0 :(得分:1)

使用timeoutterminator的组合来做这类事情可能会更好。

timeout方法的一个已知缺陷是它并不总是严格执行,很多东西都可以阻止它。