4

文字通り何十万もの HTML および XML ドキュメントを解析する必要があるプロジェクトがあります。

これは、Ruby ファイバーと新しい Goliath フレームワークを学ぶ絶好の機会だと思いました。

しかし、明らかに、ブロッキング ライブラリを使用すると、Goliath は横ばいになります。しかし、問題は、「スレッドセーフ」とは何かを判断する方法がわからないことです (それが Goliath の正しい用語でさえある場合)。

私の質問は、Nokogiri は Goliath やマルチスレッド/ファイバー全般で問題を引き起こすのでしょうか?

だとしたら、ノコギリよりも安全なものはありますか?

ありがとう

4

1 に答える 1

5

Goliath は Web フレームワークなので、HTTP 経由でこれらのドキュメントを「取り込む」ことを計画していると思いますか? 各リクエストは ruby​​ ファイバーにマップされますが、事実上、サーバーは単一のリアクター スレッドで実行されます。

だから、あなたの質問に答えるために: Nokogiri は私の知る限りではスレッド セーフですが、それはここではあまり重要ではありません。注意しなければならないこと: ドキュメントが解析されている間、CPU は固定されており、その間 Goliath は新しいリクエストを受け付けません。そのため、特定のケースを処理するために正しいロジックを実装する必要があります (例: ソケットから到着するデータのチャンクに対してストリーム解析を行うか、複数の goliath サーバー間で負荷を分散するか、またはその両方を行うことができます :-))

于 2011-04-25T14:55:11.480 に答える