Я создаю сервер потоковой передачи событий. Я беспокоюсь о том, чтобы избежать блокировки ввода-вывода или сделать что-нибудь еще, чтобы испортить цикл событий.
Из того, что я прочитал, неблокирующий ввод-вывод ruby можно использовать для потоковой передачи файлов неблокирующим способом, или я могу вызвать next_tick, но мне немного неясно, какой из этих подходов предпочтительнее. 1003 *
Отчасти проблема в том, что я не нашел хорошего объяснения неблокирующих функций библиотеки ввода-вывода в ruby.
Короткая версия :
Предполагая длительную работу сетевого ввода-вывода, несколько минут настенных часов потоковой передачи на файл, передачу, каков наилучший способ сделать это в Eventmachine, не смешивая цикл обработки событий?
while 1 do
file.read do |bytes|
@conn.send_data bytes
end
end
Я понимаю, что приведенный выше код заблокируется, и мне интересно, что поставить на его место. Кроме того, я не могу использовать класс FileStreamer, который является частью Eventmachine, как есть, потому что мне нужно манипулировать данными после того, как они прочитаны, но до того, как они отправлены.