Going to buffer response body of large or unknown size.

1,499 views
Skip to first unread message

tagawa

unread,
Feb 8, 2010, 9:01:41 AM2/8/10
to Google-App-Engine-Japan
環境はMac + JRuby + Sinatraです。

hpricotを使ってWebページのスクレイピングするプログラムを書いているのですが、
スクレイピングの処理を実行すると、
ターミナルに件名のようなメッセージが表示されます。
正確には下記のようなメッセージです。

2010/02/08 13:45:52 org.apache.commons.httpclient.HttpMethodBase
getResponseBody
?x??: Going to buffer response body of large or unknown size. Using
getResponseBodyAsStream instead is recommended.

「サイズが大きすぎて扱えない」というようなことを言われているのはわかるのですが、
どうすればよいかがわかりません。

ご存知の方はご教示いただけますでしょうか。

Google App Engineのエラーではなく、Apacheのエラーのような気もしますが。。。

どうぞよろしくお願いいたします。

【実行環境】
Mac OS 10.6
・appengine-jruby-jars (0.0.6)
・appengine-rack (0.0.6)
・appengine-sdk (1.3.0)
・appengine-tools (0.0.9)
・google-appengine (0.0.9)

Yoshifumi KOHATA

unread,
Feb 8, 2010, 11:37:15 AM2/8/10
to google-app-...@googlegroups.com
アピリオ 木幡と申します。

Ruby/JRuby も hpricot も触ったことがないのですが、ご提示いただいた
メッセージは、Apache の HTTPClient が出しているものです。
http://hc.apache.org/httpcomponents-client/index.html

たしか、getResponseBody は、HTTPで取得されるコンテンツを一度に
すべてダウンロードしてバイト配列で返すので、想定外の大きなデータ
を取得した場合などに細かい制御ができません。
メモリを食いつぶしたり、長い時間処理がブロックされたりすることが
考えられます。
getResponseBodyAsStream を使った場合、ストリームからデータを
取得できるので、こっちの方が小回りが効くので安全ですよ、という
ようなメッセージではないでしょうか。

おそらくJRubyの実装にHTTPClientが使われているのかと想像します
が、rubyのインタフェースからこのあたりを制御できるのかどうかは
前述のとおりで、不明です。

また、文字化けしてますが、おそらく警告レベル以下のメッセージ
で、処理が中断されるようなエラーではないように思われます。
スクレイピングが目的ということですので、PDFなど、非テキスト
コンテンツを相手にしないのであれば、もしかしたら、放置して
おいても良いものかもしれません。

以上、ご参考になれば幸いです。



2010年2月8日23:01 tagawa <douno...@gmail.com>:

--
このメールは Google グループのグループ「Google-App-Engine-Japan」の登録者に送られています。
このグループに投稿するには、google-app-...@googlegroups.com にメールを送信してください。
このグループから退会するには、google-app-engine...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/google-app-engine-japan?hl=ja からこのグループにアクセスしてください。




--
--
KOHATA Yoshifumi

tagawa

unread,
Feb 9, 2010, 7:40:24 PM2/9/10
to Google-App-Engine-Japan
コメントありがとうございます。

無視してよいメッセージとのことで、安心いたしました。

スクレイピングがうまく動かず、
処理が途中で止まっているのではと考えていたのですが、
うまく動いていなかったのは別の原因のようです。

あれこれ試してみて、
スクレイピングもうまく動くようになりました。
これで先に進められそうです。

GAEに関係のないメッセージにも関わらず、
お答えいただきありがとうございました。

また、GAEに関係のない質問で申し訳ありませんでした。

On 2月9日, 午前1:37, Yoshifumi KOHATA <kohata.yoshif...@gmail.com> wrote:
> アピリオ 木幡と申します。
>
> Ruby/JRuby も hpricot も触ったことがないのですが、ご提示いただいた
> メッセージは、Apache の HTTPClient が出しているものです。http://hc.apache.org/httpcomponents-client/index.html
>
> たしか、getResponseBody は、HTTPで取得されるコンテンツを一度に
> すべてダウンロードしてバイト配列で返すので、想定外の大きなデータ
> を取得した場合などに細かい制御ができません。
> メモリを食いつぶしたり、長い時間処理がブロックされたりすることが
> 考えられます。
> getResponseBodyAsStream を使った場合、ストリームからデータを
> 取得できるので、こっちの方が小回りが効くので安全ですよ、という
> ようなメッセージではないでしょうか。
>
> おそらくJRubyの実装にHTTPClientが使われているのかと想像します
> が、rubyのインタフェースからこのあたりを制御できるのかどうかは
> 前述のとおりで、不明です。
>
> また、文字化けしてますが、おそらく警告レベル以下のメッセージ
> で、処理が中断されるようなエラーではないように思われます。
> スクレイピングが目的ということですので、PDFなど、非テキスト
> コンテンツを相手にしないのであれば、もしかしたら、放置して
> おいても良いものかもしれません。
>
> 以上、ご参考になれば幸いです。
>

> 2010年2月8日23:01 tagawa <dounoko...@gmail.com>:


>
>
>
> > 環境はMac + JRuby + Sinatraです。
>
> > hpricotを使ってWebページのスクレイピングするプログラムを書いているのですが、
> > スクレイピングの処理を実行すると、
> > ターミナルに件名のようなメッセージが表示されます。
> > 正確には下記のようなメッセージです。
>
> > 2010/02/08 13:45:52 org.apache.commons.httpclient.HttpMethodBase
> > getResponseBody
> > ?x??: Going to buffer response body of large or unknown size. Using
> > getResponseBodyAsStream instead is recommended.
>
> > 「サイズが大きすぎて扱えない」というようなことを言われているのはわかるのですが、
> > どうすればよいかがわかりません。
>
> > ご存知の方はご教示いただけますでしょうか。
>
> > Google App Engineのエラーではなく、Apacheのエラーのような気もしますが。。。
>
> > どうぞよろしくお願いいたします。
>
> > 【実行環境】
> > Mac OS 10.6
> > ・appengine-jruby-jars (0.0.6)
> > ・appengine-rack (0.0.6)
> > ・appengine-sdk (1.3.0)
> > ・appengine-tools (0.0.9)
> > ・google-appengine (0.0.9)
>
> > --
> > このメールは Google グループのグループ「Google-App-Engine-Japan」の登録者に送られています。
> > このグループに投稿するには、google-app-...@googlegroups.com にメールを送信してください。

> > このグループから退会するには、google-app-engine...@googlegroups.com<google-app-engine-japan%2Bunsu...@googlegroups.com>にメールを送信してください。
> > 詳細については、http://groups.google.com/group/google-app-engine-japan?hl=jaからこのグループにアクセスしてください。
>
> --
> --
> KOHATA Yoshifumi

Yoshifumi KOHATA

unread,
Feb 9, 2010, 8:26:54 PM2/9/10
to google-app-...@googlegroups.com
問題が解決したとのこと、良かったですね。

> 無視してよいメッセージとのことで、安心いたしました。
まぁ、ケースバイケースということで (^^


2010年2月10日9:40 tagawa <douno...@gmail.com>:
このグループから退会するには、google-app-engine...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/google-app-engine-japan?hl=ja からこのグループにアクセスしてください。




--
--
KOHATA Yoshifumi

Ohgochi

unread,
Feb 10, 2010, 11:13:12 PM2/10/10
to Google-App-Engine-Japan
GAE/Jでクッキー使用ですが、往復の際に100%出ている状況です。
今のところ問題になってはいないので、100%無視しています。
ただ気持ちは非常~っに悪いです。
ローカル及びクラウド双方のhttpサーバーの実装問題と思っていますので、おそらく手の打ちようはないんだろうと理解しておりますが。
Reply all
Reply to author
Forward
0 new messages