4

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

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

但显然,如果您使用阻塞库,Goliath 就会失败。但问题是,我不知道如何判断什么是“线程安全”(如果这甚至是 Goliath 的正确术语)。

所以我的问题是,Nokogiri 是否会对 Goliath 或多线程/光纤造成任何问题?

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

谢谢

4

1 回答 1

5

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

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

于 2011-04-25T14:55:11.480 回答