Ruby Timeout::timeout doesn't fire Exception and doesn't return what documented

后端 未结 3 2173
野的像风
野的像风 2021-02-14 09:39

I have this piece of code:

begin
  complete_results = Timeout.timeout(4) do      
    results = platform.search(artist, album_name)
  end
rescue Timeout::Error
           


        
3条回答
  •  孤城傲影
    2021-02-14 10:24

    The problem is that platform.search is catching the exception that Timeout#timeout throws.

    You can get around this by wrapping your inner code in another thread -- YMMV.

    begin
      complete_results = Timeout.timeout(4) do
        Thread.new{ results = platform.search(artist, album_name) }.value
      end
    rescue Timeout::Error
      puts 'Print me something please'
    end 
    

提交回复
热议问题