社内のハッカソンでTwitter(twitter4j)を使ったアプリを作りましたが、時間内に解決できなかった問題があって、調査の時間も取れずになかなか解決できずにいました。
問題というのはすぐにAPI制限がかかってしまうというものです。
429:Returned in API v1.1 when a request cannot be served due to the application's rate limit having been exhausted for the resource. See Rate Limiting in API v1.1.(https://dev.twitter.com/docs/rate-limiting/1.1) message - Rate limit exceeded code - 88 Relevant discussions can be found on the Internet at: http://www.google.co.jp/search?q=ec1fe56d or http://www.google.co.jp/search?q=1e3b4ab6 TwitterException{exceptionCode=[ec1fe56d-1e3b4ab6], statusCode=429, message=Rate limit exceeded, code=88, retryAfter=-1, rateLimitStatus=RateLimitStatusJSONImpl{remaining=0, limit=15, resetTimeInSeconds=1410595332, secondsUntilReset=864}, version=4.0.2} at twitter4j.HttpClientImpl.handleRequest(HttpClientImpl.java:163) at twitter4j.HttpClientBase.request(HttpClientBase.java:53) at twitter4j.HttpClientBase.get(HttpClientBase.java:71) at twitter4j.TwitterBaseImpl.fillInIDAndScreenName(TwitterBaseImpl.java:128) at twitter4j.TwitterImpl.verifyCredentials(TwitterImpl.java:545) ・・・
な感じで怒られます。
で、最近になってようやく解決できました。
どうやらループ内で
twitter.verifyCredentials().getName()
しまくっていたのが悪かった模様。 verifyCredentials()で毎回API通信が発生していました。
なんかORMの動作を理解せずにselectしまくってるのと同じようなことをやらかしてました。 ごめんなさいごめんなさい。