我有一个项目需要解析数十万个 HTML 和 XML 文档。

我认为这将是学习 Ruby 纤维和新的 Goliath 框架的绝佳机会。

但很明显,如果你使用阻塞库,Goliath 就会失败。但问题是,我不知道如何分辨什么是“线程安全”(如果这甚至是歌利亚的正确术语)。

所以我的问题是,Nokogiri 是否会导致 Goliath 或多线程/光纤出现任何问题?

如果是这样,有没有比 Nokogiri 更安全的东西?

谢谢

最佳答案

Goliath 是一个 Web 框架,所以我假设您打算通过 HTTP “摄取”这些文档?每个请求都被映射到一个 ruby​​ 光纤中,但实际上,服务器在单个 react 器线程中运行。

所以,回答你的问题:据我所知,Nokogiri 是线程安全的,但这在这里根本不重要。您必须注意的事情是:在解析文档时,CPU 被固定,Goliath 在此期间不会接受任何新请求。因此,您必须实现正确的逻辑来处理您的特定情况(例如:您可以对来自套接字的数据块进行流解析,或者在多个 goliath 服务器之间进行负载平衡,或者两者都...... :-))

关于ruby - Nokogiri vs Goliath……或者,他们可以相处吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5622074/

10-11 04:06