簡體   English   中英

如何解決超時問題(Ruby,Rails)

[英]How to rescue timeout issues (Ruby, Rails)

我的大多數應用程序都與Web服務有很大關系,並且通常由於第三方站點,我會遇到超時問題。

這是我得到的錯誤:

  execution expired
  /usr/lib/ruby/1.8/timeout.rb:54:in `rbuf_fill'

如何在rails應用程序中挽救此類錯誤?

根據您使用庫的方式,有不同的方法來挽救異常。

在圖書館

假設您創建了一個包裝器來訪問某種Web服務,您可以讓包裝器解除異常並始終返回“安全”數據。

在行動中

如果您在操作中調用特定方法並且方法成功是操作的要求,那么您可以在操作中挽救它。 在下面的示例中,我解除了錯誤並顯示了一個特定的模板來處理問題。

def action
  perform_external_call
rescue Timeout::Error => e
  @error = e
  render :action => "error"
end

在控制器中

如果方法調用可以在許多不同的操作中發生,則可能需要使用rescue_from

class TheController < ApplicationController

  rescue_from Timeout::Error, :with => :rescue_from_timeout

  protected

  def rescue_from_timeout(exception)
    # code to handle the issue
  end

end

為您的機架應用程序使用超棒的Rack :: Timeout gem

然后使用Simone的控制器優點

這就是我在rails應用程序中所做的事情:

# in ApplicationController
rescue_from Your::Exception, :with => :handle_exception

protected

def handle_exception
  # do anything you want here
end

您可以像在救援條款中那樣指定例外。

問候,喬

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM