我正在創建流式事件機服務器。我很擔心避免阻塞IO或者做其他事情來彌補事件循環。從EventMachine處理程序流式傳輸文件?
從我讀到的,ruby的非阻塞IO可以用於以非阻塞方式傳輸文件,或者我可以調用next_tick,但我有點不清楚這些方法哪一個更可取。
問題的一部分是,我沒有找到一個很好的解釋在紅寶石非阻塞IO庫函數。
短版: 假設一個長期的網絡IO操作,每個文件,流媒體傳輸的幾個掛鐘分鐘,什麼是做這EventMachine的不脫膠了事件循環的最佳方式?
while 1 do
file.read do |bytes|
@conn.send_data bytes
end
end
我明白上面的代碼會阻塞,我不知道要放在什麼位置。另外,我不能使用作爲eventmachine一部分的FileStreamer類,因爲我需要在讀取數據之後但在發送數據之前操作數據。
這裏也有類似的問題。 http://stackoverflow.com/questions/4645761/how-to-write-large-files-with-ruby-eventmachine – 2011-01-10 11:50:31
我還沒有解決這個令我滿意,我對「最佳實踐」解決方案的興趣仍然很高。我的兩難處境是,我希望能夠在接近實時的情況下對流進行cpu密集型操作。不幸的是,這個答案可能是正確的http://stackoverflow.com/questions/4645761/how-to-write-large-files-with-ruby-eventmachine/4655193#4655193 – g33kz0r 2011-01-12 09:40:18