【问题标题】:Twitter Streaming API rate limit..How to deal with it?Twitter Streaming API 速率限制..如何处理?
【发布时间】:2013-10-23 13:13:58
【问题描述】:

如果我让这段代码运行大约 3 周,Twitter Streaming 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();


    }
  }

【问题讨论】:

    标签: java twitter


    【解决方案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

    *Streaming API 的速率限制是如何确定的?

    公共流 API 将在任何给定时刻发送到您的客户端的消息数量限制为推文总量的一小部分。

    https://stream.twitter.com/1/statuses/sample.json 中记录的采样软管以等于公共流媒体上限的音量提供所有推文的随机采样。

    过滤后的流将返回所有匹配的推文,最大音量等于流上限。如果有更多推文符合您的条件,您将收到一条速率限制消息,指示有多少推文未发送。*

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      • 2019-05-13
      • 2016-04-21
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 2022-08-22
      相关资源
      最近更新 更多