2012-03-21 11 views
2

URLを解析してシンプルなWebサーバーを作成し、他のルビースクリプトを呼び出して処理を行い、その後JSONを返す必要があります。Goliathを使用した非同期Web処理

これにはゴリアテが適していますか?私が見る限り、要求は順次処理されています。私はこの権利を得るために何をすべきですか?

class MyServer < Goliath::API 
    def response(env) 
    res = create_json_response(env["REQUEST_URI"]) 
    [200, {}, res] 
    end 
end 

答えて

4

より完全例えば「エコー」の例を見てみましょう:https://github.com/postrank-labs/goliath/blob/master/examples/echo.rb

ゴリアテは、意図的にあなたがあなたのスタックを構築可能で、デフォルトではほとんどを想定しようとする - これはあなたの最適化の柔軟性を提供しますいくつかの初期設定を犠牲にして、

リクエストは、イベントループから配信されるという意味で「順次」処理されます。 IOでブロックされている場合、ゴリアートは次のリクエストの処理を開始します。しかし、CPU集中型の計算をしばらく行うことにした場合、リアクタをブロックします。言い換えれば、これは他の "イベントが発生した"フレームワーク(ノードなど)とまったく同じ動作です。

重いCPU処理を行う必要がある場合は、その作業を作業キューまたは専用ワーカーに振り分ける必要があります。

関連する問題