cbm*_*eks 4 ruby multithreading thread-safety nokogiri fibers
我有一个项目需要解析成千上万的HTML和XML文档.
我认为这将是学习Ruby纤维和新Goliath框架的绝佳机会.
但显然,如果使用阻塞库,Goliath会失败.但问题是,我不知道如何判断什么是"线程安全"(如果这甚至是Goliath的正确术语).
所以我的问题是,Nokogiri是否会引起Goliath或多线程/光纤的任何问题?
如果是这样,有没有比Nokogiri更安全的东西?
谢谢
Goliath是一个Web框架,所以我假设您打算通过HTTP"摄取"这些文档?每个请求都被映射到ruby光纤,但实际上,服务器在单个反应器线程中运行.
所以,回答你的问题:据我所知,Nokogiri是线程安全的,但这在这里应该不重要.您需要注意的事项是:在解析文档时,CPU会被固定,而Goliath在此期间不会接受任何新请求.所以,你必须执行正确的逻辑来处理你的特殊情况(例如:你可以做一个流解析从套接字或多个服务器的歌利亚,或者两者之间的负载均衡到达的数据块... :-))