Чтобы не блокировать реактор, я хотел бы читать файлы асинхронно, но я не нашел очевидного способа сделать это с помощью EventMachine. Я пробовал несколько разных подходов, но никто из них не чувствует себя хорошо:
- Просто прочитайте файл, он заблокирует реактор, но что, черт возьми, это не так медленно (если это не большой файл, а затем он определенно есть).
- Откройте файл для чтения и прочитайте кусок на каждом тике (но сколько нужно прочитать? и он заблокирует реактор, слишком мало, и чтение будет медленнее, чем необходимо).
-
EM.popen('cat some/file', FileReader)
чувствует себя действительно странно, но работает лучше, чем альтернативы выше. В сочетании сLineAndTextProtocol
он быстро читает строки. -
EM.attach
, но я не нашел примеров того, как его использовать, и единственное, что я нашел в списке рассылки, это то, что он устарел в пользу... -
EM.watch
, который не нашел примеров использования для чтения файлов.
Как вы читаете файлы в цикле реактора EventMachine?