ストリーミング イベント マシン サーバーを作成しています。IO のブロックを回避することや、イベント ループを台無しにするために何か他のことを行うことを懸念しています。
私が読んだところによると、Ruby のノンブロッキング IO を使用してファイルをノンブロッキングでストリーミングするか、next_tick を呼び出すことができますが、これらのアプローチのどちらが望ましいかは少しわかりません。
問題の一部は、Ruby のノンブロッキング IO ライブラリ関数の適切な説明を見つけられなかったことです。
短いバージョン: 長時間のネットワーク IO 操作、ファイルごとの数時間のストリーミング、転送を想定すると、イベント ループを台無しにすることなく eventmachine でこれを行う最善の方法は何ですか?
while 1 do
file.read do |bytes|
@conn.send_data bytes
end
end
上記のコードがブロックされることは理解していますが、その場所に何を配置すればよいか迷っています。また、eventmachine の一部である FileStreamer クラスをそのまま使用することはできません。読み取り後、送信前にデータを操作する必要があるためです。