2

接続を受信し、いくつかの処理を行い、標準ポートで応答を返す単純なプログラムがあります。これは同期的に行われるため、1 つの要求に時間がかかりすぎると、同時要求は処理されません。

Deerrable は、ブロッキング リクエストが発生していても、複数のリクエストを同時に処理できるようにするための方法ですか?

ありがとう、

4

2 に答える 2

0

最も簡単な方法は、新しいスレッドをフォークしてバックグラウンドタスクを処理し、EventMachineに関連する処理を行う前にメインスレッドに戻すことです。defer次の方法でこれを行うことができます。

def do_something
  EventMachine.defer do
    do_long_process
  end
end

next_tickブロックが接触するアプリケーションの部分はスレッドセーフである必要があり、すべてのEventMachine操作が適切なスレッドで行われるようにするなどの方法でメインスレッドに戻る必要があることに注意してください。

于 2011-07-28T23:05:18.663 に答える
0

これは、リクエストに時間がかかる理由によって異なります。DB クエリや別のサーバーへの何らかの種類のリクエスト (HTTP、TCP、SMTP など) のような IO バウンドの場合は、EventMachine が適しています。

そうでない場合は、リクエストに時間がかかりすぎる理由を説明できますか?

于 2011-08-08T19:52:24.407 に答える