>>860
直列な処理でいいなら
LWPのリクエストをタイムアウトさせる定番処理を応用すればいいんじゃね
こんなやつ

my $TIMEOUT = 60 * 5;
 eval {
  local $SIG{ALRM} = sub { die 'timeout'; };
  alarm $TIMEOUT;
  $response = $ua->request($request);
  alarm 0;
 };
 unless ($@ =~ /timeout/) {
  if ($response->is_success) {
  return $response->content;
  }
 }