Как спасти проблемы тайм-аута (Ruby, направляющие)

большинство моих приложений имеет непосредственное отношение к веб-сервисам и часто из-за стороннего сайта, я получаю проблемы тайм-аута.

Это - ошибка, которую я получаю:

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

Как я спасаю этот вид ошибки в приложении для направляющих?

11
задан Uri Agassi 6 May 2014 в 06:49
поделиться

2 ответа

В зависимости от того, как вы используете библиотеку, есть разные способы спасти исключение.

В библиотеке

Предполагая, что вы создали оболочку для доступа к какой-либо веб-службе, вы можете использовать оболочку для восстановления исключения и всегда возвращать «безопасные» данные.

В действии

Если вы вызываете определенный метод в действии, и успех метода является требованием для действия, вы можете спасти его в действии. В следующем примере я спасаю ошибка и покажите конкретный шаблон для решения проблемы.

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
29
ответ дан 3 December 2019 в 02:01
поделиться

вот что я делаю в своих rails-приложениях:

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

protected

def handle_exception
  # do anything you want here
end

Вы можете указать исключение, как вы бы сделали это в условии спасения, конечно.

Приветствую, Джо

2
ответ дан 3 December 2019 в 02:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: