アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になります。

perl+mechanizeで、スクレイピングスクリプトを書いております。

$mech->reload();

にて、44秒~2分程度、サーバーから反応がない場合があります。この場合$mech->contentからは、"500 Server closed connection without sending any data back"というエラーを得ることができます。

この$mech->reload()時に、例えば、5秒待って、サーバーから反応がない場合は、次の処理に進ませる実装方法はありますでしょうか?

$mechの生成時に、
$mech = WWW::Mechanize->new(timeout => 5);
などとして、タイムアウト時間を5秒に設定することも出来るようですが、前記$mech->reload()時の時のみ5秒間のタイムアウト時間としたいのです。というのも、その他の箇所で、$mechは時間をかけてもよいからです。

以上、すみませんが、ご存知の方がいらっしゃいましたら、ご教示願います。

A 回答 (1件)

#!/usr/bin/perl


use warnings;
use strict;
use WWW::Mechanize;

my $mech = WWW::Mechanize->new();

print "default ", $mech->timeout, "[sec]\n";

$mech->timeout(5);
print "modified ", $mech->timeout, "[sec]\n";

---
default 180[sec]
modified 5[sec]
    • good
    • 0
この回答へのお礼

_--_1l1_1_さん

ありがとうございます。タイムアウトを短くしたい処理の前で$mech->timeout(5);を実行し、処理が終わったら、$mech->timeout(デフォルト秒);に戻せばいいのですね。

トライしてみます。ありがとうございました。

お礼日時:2009/07/26 01:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!