【问题标题】:Stateful JSON Parser for Ruby用于 Ruby 的有状态 JSON 解析器
【发布时间】:2012-06-13 00:15:10
【问题描述】:

我有一个 Ruby 服务器,它每 1 秒左右从一个平面文件中读取数据,并且这个平面文件每隔 1 秒左右就不断地被另一台服务器更新为新数据。这个平面文件本质上是一个 JSON 文件。问题是,我不想一遍又一遍地阅读整个文件。相反,我希望 ruby​​ 服务器找出哪些内容是新的并且只读取那些部分。所以我猜我正在为 Ruby 寻找一个有状态的 JSON 解析器。由于我对 Ruby 很陌生,所以我不熟悉这样的库。有人可以建议在这种情况下可能有用的东西吗?

【问题讨论】:

  • 您的意思是您希望能够在接收数据时进行增量解析?
  • @FrederickCheung:“哪些内容是新的” - 我不认为他在谈论仅附加文件。
  • @FrederickCheung:就像 Sergio 提到的,我只想阅读新内容。我希望能够记下对该文件的先前读取操作在哪里结束并从那里继续读取。这就是问题所在。我不知道该怎么做。另外,我正在编写一个守护程序,一旦达到阈值,它将通过删除早期的 json 字符串来定期清理文件。所以这增加了问题。有什么建议吗?
  • 几分钟前我找到了 yajl-ruby,现在我正在检查它。这似乎是答案。我不肯定。我会检查一下并告诉你。非常感谢!
  • 文件的格式如何?因为如果它一个JSON文件,那么

标签: ruby json parsing stateful


【解决方案1】:

没有“有状态的 JSON 解析器”之类的东西。有状态(如“有状态服务器”)意味着服务器(或解析器)在请求(解析)之间维护某种状态。但是无论如何你都必须读取和解析整个文件,为什么要复杂化呢?

如果文件很小,每次都解析它。如果文件很大,请改用数据库。

【讨论】:

  • “但无论如何你都必须阅读并解析整个文件”。那是我的问题。有什么办法不每次都这样做吗?解析器可以记录它在哪里停止并下次从那里恢复吗?我希望有一个解析器可以做到这一点?
  • 那么,另一个进程,它只是附加到文件吗?
  • 是的,文件很大。它将包含数千个 JSON 字符串,我正在尝试实时执行所有操作。这就是为什么我不想每次都阅读整个文件。我可以使用数据库,但我将这个模块与另一个大模块插入,并且那个模块写入平面文件。改变这是相当复杂的,这不是我想走的路。这就是我试图以这种方式解决问题的原因。任何和所有的帮助表示赞赏!谢谢!
  • 是的,另一个模块一直在附加到文件中,而我正在编写的模块一直在读取它。
猜你喜欢
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
  • 2012-06-29
  • 1970-01-01
相关资源
最近更新 更多