gpt4 book ai didi

ruby - 在基于 EventMachine 的应用程序中读取文件的最佳方式是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 06:41:53 26 4
gpt4 key购买 nike

为了不阻塞 react 器,我想异步读取文件,但我没有发现使用 EventMachine 进行此操作的明显方法。我尝试了几种不同的方法,但感觉都不对:

  • 只是读取文件,它会阻塞 react 堆,但管他呢,它不是慢的(除非它是一个大文件,然后它肯定是)。
  • 打开文件进行读取并在每个滴答时读取一个 block (但是要读取多少?太多会阻塞 react 器,太少读取会变得比必要的慢)。
  • EM.popen('cat some/file', FileReader) 感觉真的很奇怪,但比上面的替代方案效果更好。结合 LineAndTextProtocol,它可以非常快速地读取行。
  • EM.attach,但我还没有找到任何有关如何使用它的示例,而且我在邮件列表中发现的唯一一件事是它已被弃用,取而代之的是……<
  • EM.watch,我没有找到有关如何使用它来读取文件的示例。

如何在 EventMachine react 器循环中读取文件?

最佳答案

EM.attach/watch 不能用于文件,因为基于磁盘的文件描述符上的 select/epoll 将始终返回可读。

最终,这取决于您要做什么。如果它是一个小文件,只需 File.read 即可。如果它更大,您可以随着时间的推移读取小块。例如,EM::FileStreamer 这样做是为了通过网络发送大文件。

另一个常见的用例是跟踪文件并在文件更改时读入新内容。这可以使用 EM.watch_file 来实现:http://github.com/jordansissel/eventmachine-tail

关于ruby - 在基于 EventMachine 的应用程序中读取文件的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2749503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com