Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Java

Twitter APIのRate Limit Exceedエラー(code – 88)の意味について

投稿日:

 

<目次>

(1) Twitter APIのRate Limit Exceedエラー(code – 88)の意味について
 (1-1) APIコールのリミット(Rate Limit)について
 (1-2) RateLimitのモニタリングについて
 (1-3) Rate Limit Exceedエラー(code – 88)の対策について

(1) Twitter APIのRate Limit Exceedエラー(code – 88)の意味について

Twitter APIを使っていると、多くの方は次のエラーメッセージに遭遇した事があるのでは?と思います。本記事ではこのエラーの内容や原因についてご紹介致します(対処方法は下記の別記事をご参照ください)。

(参考)Rate Limit Exceedエラー(code – 88)を回避するための簡易的な対策について

(エラーメッセージ)

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

(図111)

(1-1) APIコールのリミット(Rate Limit)について

Twitter APIの各APIエンドポイントには、混雑緩和のための「Rate Limit」があり、直近の15分枠でコールできるAPIの回数をエンドポイント毎に設定しています。
 
 
例えば、フォロワーの情報を取得する「GET followers/list」の場合、「Requests / window per user」の値が15になっているので、直近の15分枠で15回しかエンドポイントをコールできない、といったイメージになります。なので、もし15分枠の間に15回のコールを使い切った場合は、最大で15分待てば枠が全回復するイメージになります。
 
そしてTwitter4jのようなライブラリを使用してTwitterのAPIを使用する場合、最初は「Twitter4jのメソッドの名前」と「コールされるエンドポイントの名前」が紐づきにくいかも知れないので、いくつかの主要なエンドポイントについて、その情報を紐づけした一覧を掲載します(※すみません、一部?の箇所があります)
 
(表)
区分 Twitter4jメソッド名 コールするAPI名 リクエスト数上限/15分 標準件数/ページ 最大件数/ページ クエリ可能件数/15分
共通 showUser GET users/:id 900 1 1 900
ツイート検索 search GET search/tweets 180 ヒットした数による 180
ツイート検索 searchUsers GET users/search 900 20 900
ツイート検索 getUserTimeline GET statuses/user_timeline 900 20 20 900
フォロワー系 getFollowersList GET followers/list 15 20 200 3000
フォロワー系 getFollowersIDs GET followers/ids 15 5000 75000
フォロー系 getFriendsList GET friends/list 15 20 200 3000
フォロー系 getFriendsIDs GET friends/ids 15 5000 75000
リツイート者一覧 getRetweets GET statuses/retweets/:id 75 100 100 7500
リツイートID一覧 getRetweeterIDs GET statuses/retweeters/ids 75 200 15000

目次にもどる

(1-2) RateLimitのモニタリングについて

Twitter4jのライブラリを使われている場合の例となり恐縮ですが、RateLimitの状況をモニタリングするためのメソッドも用意されており、比較的簡単に状況を監視する事ができます。
 
まず、全エンドポイントの状況を知るためにTwitter4jの「getRateLimitStatus」メソッドを用いると、RateLimitStatusのMapを返却してくれます。
 
ratelimits = [Twitter型インスタンス].getRateLimitStatus();

返却されるデータは次のようなイメージです↓。

⇒(参考)返却データイメージ

あとは、このMapの各キーをループするなりして、欲しいエンドポイントの情報を抜き出す事で、現在の状況をリアルタイムに把握する事ができます。以下はそのコードのイメージです。

//# RateLimit情報をMapに格納
Map<String,RateLimitStatus> ratelimits = new TreeMap<>();
ratelimits = [Twitter型インスタンス].getRateLimitStatus();
//# 探したいエンドポイントの残数を取得していく
for(String endpoint : ratelimits.keySet()) {
    if(endpoint.equals(RoutingTable.ep_showUser)) {                             
        RateLimitStatus status = ratelimits.get(endpoint);
        remain_showuser = status.getRemaining();
        total_showuser = status.getLimit();

    }else if(endpoint.equals(RoutingTable.ep_search)) {                         
        RateLimitStatus status = ratelimits.get(endpoint);
        remain_search = status.getRemaining();
        total_search = status.getLimit();
    }else if・・・
	//~エンドポイントの数だけ続く~

目次にもどる

(1-3) Rate Limit Exceedエラー(code – 88)の対策について

別記事にてご紹介していますので、もし良ければご参照ください。
 
 

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Java

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

サーバサイドJava(JSP&サーブレット)のFORM認証を用いたログイン画面の開発

(0)目次&概説 (1) サーバー側JavaのFORM認証  (1-1) 認証の種類  (1-2) FORM認証の特徴  (1-3) FORM認証の実装概要 (2) FORM認証の実装手順  (2-1 …

Javaで実装したLinkedListのサンプルプログラムをご紹介

<目次> (1) Javaで実装したLinkedListのサンプルプログラムをご紹介  (1-1) LinkedListの概要  (1-2) LinkedListの特徴  (1-3) LinkedLi …

Javaでdouble型での誤差を対処する方法について+サンプルプログラムも紹介

(1) Javaでの誤差の対処法  (1-1) 対処が必要なケース  (1-2) 対処の方法   (1-2-1) BigDecimalクラスでの対処   (1-2-2) int型を優先的に使い対処   …

Javaのenumとは?使い方や意味を様々な利用シーンでご紹介(if、for、switch他)

<目次> (1) Javaのenumとは?意味や用途を様々な利用シーンでご紹介   (1-1) enumとは?  (1-2) 構文(enumの定義)  (1-3) 様々なenumの使用例 (1) Ja …

クッキーとは?JSPでCookieを保存&取得するサンプルプログラムと代表的なメソッド紹介

(1) セッションとは (2) クッキーとは  (2-1) 概要  (2-2) サンプルプログラム   (2-2-1) 概要&画面遷移   (2-2-2) HelloCookie.jsp   (2-2 …

  • English (United States)
  • 日本語
Top