0

このコードを約 3 週間実行したままにしておくと、Twitter ストリーミング API ストリームは中断されずに実行されますか? または、レート制限を追跡する必要がありますか?もしそうなら、どうすればそれを行うことができますか?

 import twitter4j.*

 public class SimpleStream {
 public static void main(String[] args) {
    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true);
    cb.setOAuthConsumerKey("******");
    cb.setOAuthConsumerSecret("*****");
    cb.setOAuthAccessToken("********");
    cb.setOAuthAccessTokenSecret("******************");

    TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance();

    StatusListener listener = new StatusListener() {


        @Override
        public void onStatus(Status status) {
            User user = status.getUser();


            String username = status.getUser().getScreenName();
            System.out.println("Screen name: " + username);

            String name = status.getUser().getName();
            System.out.println("User's real name: " + name);

            long user_id = status.getUser().getId();
            System.out.println("Users_id: " + user_id); 

        }

    };

    twitterStream.addListener(listener);
    twitterStream.sample();


    }
  }
4

1 に答える 1

1

RateLimitStatusListener を追加して、制限に達したかどうかを追跡できます。

twitterStream.addRateLimitStatusListener( new RateLimitStatusListener() {
    @Override
    public void onRateLimitStatus( RateLimitStatusEvent event ) {
        System.out.println("Limit["+event.getRateLimitStatus().getLimit() + "], Remaining[" +event.getRateLimitStatus().getRemaining()+"]");
    }

    @Override
    public void onRateLimitReached( RateLimitStatusEvent event ) {
        System.out.println("Limit["+event.getRateLimitStatus().getLimit() + "], Remaining[" +event.getRateLimitStatus().getRemaining()+"]");
    }
} );

「レート制限」に関する twitter-faq セクションも確認してください: https://dev.twitter.com/docs/faq#6861

*ストリーミング API のレート制限はどのように決定されますか?

パブリック ストリーミング API は、クライアントに送信されるメッセージの数を、任意の時点でツイートの総量のごく一部に制限します。

サンプル ホースは、https://stream.twitter.com/1/statuses/sample.jsonに記載されているように、パブリック ストリーミングの上限に等しいボリュームですべてのツイートのランダム サンプリングを配信します。

フィルタリングされたストリームは、一致するすべてのツイートを最大でストリーミング キャップに等しいボリュームまで返します。条件に一致するツイートが他にもある場合は、配信されなかったツイートの数を示すレート制限メッセージがストリーミングされます。*

于 2013-10-23T14:26:08.407 に答える