4
私は、ネットワーク上でさまざまな操作を行うクラスをたくさん持っています。わかっているように、ネットワーク操作がタイムアウトすることがあります。だから私はこのようなことを考えている:ロールにアラームを設定する
package My::Role::NetworkFetcher {
use Moose::Role;
sub BUILD {
my $self = shift;
local $SIG{ALRM} = sub {
$self->handle_timeout;
};
alarm 60;
}
sub handle_timeout {
die "default timeout handler";
}
}
私はこれについてこれを行う最善の方法は分かりません。 は、私の非常に簡単なテストケースではOKで動作するようにはと思われますが、オブジェクトのBUILD
メソッドをハイジャックしたり、シグナルハンドラをこのようにローカライズすることが正しいかどうかはわかりません。
これは実際には私の意図です。基本的には、プロセスごとにキューから入ってくる特定のジョブを実行するクラスです。タイムアウトを設定して、ジョブが1分以上かかると、プロセスが終了してエラーが記録されるようにします。 – friedo
それで、心配することは何もありません。あなたが投稿したものは私には良く見えます。 –