read timeout at /usr/lib/perl5/site_perl/5.8.8/LWP/Protocol/http.pm line 426. at /usr/lib/perl5/site_perl/5.8.8/LWP/UserAgent.pm line 844
誰でも知っていますか?
read timeout at /usr/lib/perl5/site_perl/5.8.8/LWP/Protocol/http.pm line 426. at /usr/lib/perl5/site_perl/5.8.8/LWP/UserAgent.pm line 844
誰でも知っていますか?
LWPはタイムアウト時に次のステートメントを続行します。具体的には、5xx エラー コードを含む HTTP::Response オブジェクトを返します。
>perl -MLWP -e"my $ua = LWP::UserAgent->new(timeout => 1); print $ua->get('http://...something really slow...')->as_string;"
500 read timeout
Content-Type: text/plain
Client-Date: Thu, 30 Jun 2011 06:35:11 GMT
Client-Warning: Internal response
read timeout at .../lib/LWP/Protocol/http.pm line 433.
続けて何?
タイムアウトを無効にしたい場合は->timeout(0)
、ユーザー エージェント オブジェクトを呼び出すだけです。
例外によってプロセスが終了しないようにするには、コードをeval {}
ブロックでラップします。http://perldoc.perl.org/functions/eval.htmlを参照してください。
しかし、あなたが示す例外をどのように取得しているのか知りたいです。通常の方法で LWP を使用すると、すでにその例外をキャッチしてエラー応答を返すため、コードを続行できます。ヘルプが必要な場合は、コードを表示してください。
要求が送信され、応答が受信されているときに、このプロセスの途中で接続が中断された (インターネット接続がダウンした) 場合、LWP は$response->code
200の a を返し$response->content
、部分的なあなたが要求したコンテンツのダウンロード。その後、再試行すると、すぐに読み取りタイムアウトエラーが発生します。
もちろん、これはプロセスの非常に特定の部分で接続が失われた場合にのみ発生しますが、発生します。
受信したコンテンツが完全かどうかを確認し、完全でない場合は、次の接続を試みる前に回避することをお勧めします。