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;
みんなのおかげで、
チアゴ