チェンジセット 138: trunk

差分発生行の前後
無視リスト:
コミット日時:
2011/10/20 18:05:22 (13 年前)
コミッタ:
sorshi
ログメッセージ:

radiko/らじる録音のリトライ機能追加

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • trunk/install/perl/recwrap.pl

    r131 r138  
    8686 @stationline= $sth->fetchrow_array; 
    8787$radikostationname = $stationline[3]; 
    88  
     88my $starttime = time(); 
     89my $endepochtime = time() + $reclength; 
     90#録音 
    8991$oserr = system("$toolpath/perl/digitalradiorecording.pl $radikostationname $reclength $outputfilename"); 
    9092$oserr = $oserr / 256; 
    9193&writelog("recwrap DEBUG radiko rec finished. $oserr"); 
     94#サーバビジーで即死してないか検出 
     95$now = time(); 
     96if ($now < $endepochtime){ #終了予定より前に録音プロセスが戻ってきたなら 
     97&writelog("recwrap radiko rec failed,will be retry. NOW:$now PlanedEnd:$endepochtime"); 
     98 
     99my $retrycounter = 0; 
     100my $waitsecsbase = 10;  
     101my $waitsec ; 
     102my $waitsecsrand ; 
     103my $recfilepath; 
     104        while($now < $endepochtime){ 
     105                if($retrycounter >= 15){ 
     106                        &writelog("recwrap radiko rec failed,Giving up.Max retry counter over."); 
     107                        last; 
     108                } 
     109        $waitsecsrand = int(rand($waitsecsbase/2)); 
     110        $waitsec = $waitsecsbase + $waitsecsrand ; 
     111        &writelog("recwrap DEBUG radiko rec retry waiting. $waitsec ($waitsecsbase + $waitsecsrand)"); 
     112        sleep($waitsec); 
     113        &writelog("recwrap DEBUG retry start."); 
     114        $recfilepath = "$recfolderpath"."/"."$outputfilename"; 
     115        if (-e $recfilepath ){ 
     116                unlink("$recfilepath"); 
     117                &writelog("recwrap DEBUG delete $recfilepath"); 
     118        } 
     119        #録音 
     120        $oserr = system("$toolpath/perl/digitalradiorecording.pl $radikostationname $reclength $outputfilename N");#起動waitなしで 
     121        $oserr = $oserr / 256; 
     122        &writelog("recwrap DEBUG radiko rec retry finished. $oserr"); 
     123 
     124        $retrycounter++; 
     125        if ($waitsecsbase < 600 ){  
     126                $waitsecsbase = $waitsecsbase * 2; 
     127        } 
     128        $now = time(); 
     129        }# while 
     130} # if  
     131 
    92132 
    93133# aacファイル名をfoltia_subtitlePIDレコードに書き込み 
track feed