リアクタをブロックしないために、ファイルを非同期で読み取りたいのですが、EventMachineを使用してそれを行う明確な方法が見つかりませんでした。私はいくつかの異なるアプローチを試しましたが、どれも正しいとは感じていません。
- ファイルを読むだけで、リアクターがブロックされますが、それはそれほど遅くはありません(大きなファイルでない限り、間違いなくそうです)。
- 読み取るためにファイルを開き、各ティックでチャンクを読み取ります(ただし、読み取る量が多すぎると、リアクターがブロックされ、少なすぎると、読み取りが必要以上に遅くなります)。
EM.popen('cat some/file', FileReader)
本当に奇妙に感じますが、上記の選択肢よりもうまく機能します。それと組み合わせて、LineAndTextProtocol
それはかなり速く行を読みます。EM.attach
、しかし、私はそれを使用する方法の例を見つけていません、そして私がメーリングリストで見つけた唯一のことはそれが廃止されて…</li>を支持しているということですEM.watch
、ファイルの読み取りに使用する方法の例は見つかりませんでした。
EventMachineリアクターループ内のファイルをどのように読み取りますか?