2012-05-11 5 views
2

私は、この例のようなモジュールで作成された別のメソッドを呼び出して、コントローラのメソッドを持っています。定義タイマー方式のコントローラレールは

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

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

メソッドget()は情報を探して、ウェブサイトに行くと配列を返します。 すべてが完璧に動作しますが、コントローラで実行するのに時間がかかる場合は、タイムアウトを設定する方法があるのでしょうか?出来ますか?

答えて

2

は、あなたがそれを行うことができ、一方向(より一般的な方法)..です

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 
0

ModuleName :: ClassName.get()の下に、ある種のサードパーティのRubyのhttpライブラリを含めると、何らかの種類のtimeoutパラメータを設定する必要があります(ライブラリによって異なります)。希望のタイムアウトを数秒で渡すだけです。

このように擬似コードは次のようになります。より詳細な回答については

ModuleName::ClassName.get(10) 

を、あなたは、外部サービスへの呼び出しを行っている方法の詳細について具体的に説明してくださいできますか?ここ

関連する問題