2011-06-30 4 views

答えて

1

何を続けるだけですか?

タイムアウトを無効にする場合は、ユーザーエージェントオブジェクトに->timeout(0)と電話するだけです。

例外がプロセスを終了させないようにするには、コードをeval {}ブロックで囲みます。 http://perldoc.perl.org/functions/eval.htmlを参照してください。

しかし、あなたがどのように例外を表示しているのかが分かりました。通常の方法でLWPを使用すると、すでにその例外が検出され、エラー応答が返され、コードを続行できます。ヘルプが必要な場合は、コードを表示してください。

+0

ただ終了する次のステートメント・インスレを実行し続ける。 –

+0

タイムアウトが '0'に設定されていると、LWPが永遠にハングする可能性はありますか? –

+0

いいえ、0はタイムアウトがないことを意味します。 – ysth

2

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. 
0

(インターネット接続がダウン)、LWPは、200の$response->codeを返します。あなたが要求したコンテンツの部分ダウンロードに等しい$response->contentになります。再試行すると、すぐにの読み取りタイムアウトエラーが発生します。

もちろん、これはプロセスの特定の部分で接続が失われた場合にのみ発生しますが、それは起こります。

受信したコンテンツが完全であるかどうかを確認し、そうでない場合は、次回の接続を試みる前に回避することをお勧めします。

関連する問題