1

OAuth 認証で cpan ライブラリ AnyEvent::Twitter::Stream を使用してツイート クローラーを実行しましたが、いくつかの問題が発生しています。Twitter がストリーミング API を介したツイートの送信を停止することがあります。次に、プログラムをしばらくスリープ状態にします。その後、さらにツイートを収集するためにプログラムが復帰するはずですが、これは行われません。スクリプトは再接続を試み続けますが、接続を確立できません。どうなり得るか?私のコードを以下に示します。

my $done = AnyEvent->condvar;
my $count=0;
# track keywords através da OAuth
my $guard = AnyEvent::Twitter::Stream->new(
    consumer_key    => "...",    #My Oauth authentication enters here
    consumer_secret => "...",
    token           => "...",
    token_secret    => "...",
    method   => "filter",
    track    => $track,
    on_tweet => \&got_tweet,
    on_error => \&connection_close,
    timeout => 45,
);
sub connection_close{
    my($headers)=@_;
    print "HEADERS: $headers\n\n\n\n\n";
    open(FOUT,">>arquivoalerta.txt");
    my $Agora = time();
    my $HoraLocal = localtime($Agora);
    my @Tempo = split(/ +/,$HoraLocal);
    print FOUT "Parei de coletar às @Tempo  Streaming API";
    if ($count==0){
        print FOUT "Dormindo por 10 segundos\n";
        print "Dormindo por 10 segundos\n";
        sleep 10;
    }
    elsif($count==1){
        print FOUT "Dormindo por 20 segundos\n";
        print "Dormindo por 20 segundos\n";
        sleep 20;
    }
    else{
        print FOUT "Dormindo por 240 segundos\n";
        print "Dormindo por 240 segundos\n";
        sleep 240;
    }
    close(FOUT);
    $count++;
    warn "Connection to Twitter closed";
}

sub got_tweet {
    #Here I treat the data and store it in a database ...
}

$done->recv;

みんなのおかげで、

チアゴ

4

0 に答える 0