2

この例のように、モジュールで作成された別のメソッドを呼び出すコントローラーにメソッドがあります。

  def example
    @var1 = ModuleName::ClassName.get()

    respond_to do |format|
      format.json { render json: @var1}
    end
  end

メソッド get() は、情報を探している Web サイトにアクセスし、配列を返します。すべてが完璧に機能しますが、アプリケーションの実行に時間がかかる場合、コントローラーでタイムアウトを設定する方法があるのだろうか! 出来ますか?

4

2 に答える 2

2

ここにあなたがそれを行うことができる1つの方法(より一般的な方法)があります..

def example
 Timeout::timeout(40) do  # 40 sec, change it to anything you like
   @var1 = ModuleName::ClassName.get()
 rescue Timeout::error
   # do something (maybe set @var1's value if it couldn't get desired array)
 end
 respond_to do |format|
  format.json { render json: @var1}
 end
end
于 2012-05-11T11:21:37.403 に答える
0

ModuleName::ClassName.get() の下で、ある種のサードパーティの ruby​​ http ライブラリをほのめかしている場合は、ある種のtimeoutパラメータを設定する必要がある可能性があります (ライブラリによって異なります)。必要なタイムアウトを秒単位で渡すだけです(または任意の測定値)。

したがって、疑似コードは次のようになります。

ModuleName::ClassName.get(10)

より詳細な回答が必要な場合は、外部サービスへの呼び出しをどのように行っているかを具体的に教えてください。

于 2012-05-11T11:16:56.607 に答える