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でファイルへの書き込みする方法の基礎(追記・上書き、改行の方法等)

<目次> (1) Javaでファイルへの書き込みする方法の基礎(追記・上書き、改行の方法等)  (1-1) STEP1:FileWriterクラスのインスタンス化  (1-2) STEP2:ファイルへ …

Javaで複数の配列を結合する方法について

<目次> (1) Javaで複数の配列を結合する方法について  (1-1) 構文  (1-2) サンプルプログラム (1) Javaで複数の配列を結合する方法について Javaで複数の配列を結合する方 …

JSP Servletでセッションの有効期限を設定する方法

<目次> (1) JSP Servletでセッションの有効期限を設定する方法  (1-1) セッションの有効期限設定の概要  (1-2) 方法1:web.xmlに追記する方法  (1-3) 方法2:プ …

Javaのフォーム認証でログインを行うと数回で固まってしまう事象の対処記録

<目次> (1) Javaのフォーム認証でログインを行うと数回で固まってしまう事象の対処記録  (1-1) 発生事象・エラーメッセージ  (1-2) 原因  (1-3) 対策 (1) Javaのフォー …

Javaでファイル読み込みを行う方法+サンプルプログラムもご紹介

<目次> (1) Javaでファイル読み込み&書き込みを行う方法  (1-1) 構文  (1-2) サンプルプログラム (1) Javaでファイル読み込み&書き込みを行う方法 (1-1) 構文 (構文 …

  • English (United States)
  • 日本語
Top