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を続行するだけですか?
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を続行するだけですか?
何を続けるだけですか?
タイムアウトを無効にする場合は、ユーザーエージェントオブジェクトに->timeout(0)
と電話するだけです。
例外がプロセスを終了させないようにするには、コードをeval {}
ブロックで囲みます。 http://perldoc.perl.org/functions/eval.htmlを参照してください。
しかし、あなたがどのように例外を表示しているのかが分かりました。通常の方法でLWPを使用すると、すでにその例外が検出され、エラー応答が返され、コードを続行できます。ヘルプが必要な場合は、コードを表示してください。
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.
(インターネット接続がダウン)、LWPは、200の$response->code
を返します。あなたが要求したコンテンツの部分ダウンロードに等しい$response->content
になります。再試行すると、すぐにの読み取りタイムアウトエラーが発生します。
もちろん、これはプロセスの特定の部分で接続が失われた場合にのみ発生しますが、それは起こります。
受信したコンテンツが完全であるかどうかを確認し、そうでない場合は、次回の接続を試みる前に回避することをお勧めします。
ただ終了する次のステートメント・インスレを実行し続ける。 –
タイムアウトが '0'に設定されていると、LWPが永遠にハングする可能性はありますか? –
いいえ、0はタイムアウトがないことを意味します。 – ysth