Chonaso's Commentary

InternetやIT技術などについて知ったこと、試したこと、考えたことを書いていきます。

twitter4jでハマったこと

社内のハッカソン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しまくってるのと同じようなことをやらかしてました。 ごめんなさいごめんなさい。