Rainbow Engine

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

Java

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

投稿日:2021年8月15日 更新日:

<目次>

(1) Twitter APIのRate Limit Exceedエラー(code – 88)を回避するための簡易的な対策について
 (1-1) 対策①:APIの使用回数に閾値を設ける
 (1-2) 対策②:「APIの残量」と「API使用予定量」を比較して閾値判定
 (1-3) 対策③:レコード数「0件」時の無駄なAPIコールをしない

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

Twitter APIのRate Limit Exceedエラー(code – 88)を回避するために、私が実践したいくつかの対策をご紹介致します。今回ご紹介するものは「どれもシンプルで簡単に実践できる」もののみをご紹介しているので、初心者の方でも実践しやすいものになります。

(1-1) 対策①:APIの使用回数に閾値を設ける

例ですが、「ユーザの本日のAPI使用回数」(下図①)を記録しつつ、それをシステム側で設けている「1日の使用回数の上限」(下図②)と比較して、もし上限を超えている場合は「上限超過エラー画面」に遷移させる事で、ユーザには「Rate Limit Exceed」を見せないようにできます。
 
(図131)「APIの使用回数に閾値を設ける」のイメージ

(1-2) 対策②:「APIの残量」と「API使用予定量」を比較して閾値判定

これは主に「フォロワー数」と「フォロー数」を取得するAPIに関するTipsですが、「APIの残量」というのはRateLimitStatus型のインスタンスに格納されている「使用可能残数」(直近15分枠の残量)の情報です。具体的には次のようなコードで取得します。
 
(例)APIの残量の取得
//エンドポイントを指定してリミット情報(RateLimitStatus型のインスタンス)を取得
RateLimitStatus status = ratelimits.get([エンドポイントのURL]);
//エンドポイントの使用可能残数(直近15分枠)⇒分子
remain_user = status.getRemaining();
//エンドポイントの使用可能総数⇒分母
total_user = status.getLimit();

(図132)「APIの残量の取得」の例

「API使用予定量」は今まさに操作しているユーザがどれくらいAPIを使用するか?の情報です。例えばフォロワーが1000人の人がAPI「GET followers/list」をコールした場合、1回のクエリでAPIを最小5コール分消費します(1ページをMax200件にした場合)。なので、この例での「API使用予定量」は「GET followers/list」(Max200件/1コール)を5コール使う予定になります。

あるユーザのフォロワー数、フォロー数であれば以下のようなメソッドを作って簡単に取得できるので、その戻り値を比較に使います。

(例)

//# (D)指定したIDのフォロワー数を取得
public int getFollowerCount(String userid) {

    int follower_count = 0;
    try {
        //# フォロワーの一覧を出したい対象のユーザ情報
        User user = twitter.showUser(userid);
        follower_count = user.getFollowersCount();
    } catch (TwitterException e) {
        e.printStackTrace();
    }
    System.out.println("# [FollowerInfo.getFollowerCount] フォロワー件数取得: " + follower_count);
    return follower_count;
}
 
(図133)「API使用予定量」(例:フォロワー数)を取得するメソッド

2つの値を比較して、もしも「API使用予定量」>「APIの残量」ならビジー画面に遷移させる事で「Rate Limit Exceed」のエラーを回避できます。そして15分経過してAPIコール残数が回復したタイミングで再度、照会を実行して頂く等の流れにメッセージ等で誘導します。

(図134)

(1-3) 対策③:レコード数「0件」時の無駄なAPIコールをしない

例えば、フォロワー数のAPI「GET followers/list」をコールする前に、事前に検索対象のフォロワー数をチェックし、もし0件の場合はAPIをコールする事なく「検索結果0件画面」を表示するというものです。
 
フォロワー数の取得は「対策②」で照会したものと同様の方法で取得が可能です。
 
(図135)

Adsense審査用広告コード


Adsense審査用広告コード


-Java

執筆者:


comment

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

関連記事

JDKのインストール手順+どれを選択すれば良いか?&確認の方法は?をご紹介

  <目次> (1) JDKのインストール手順+どれを選択すれば良いか?&確認の方法は?をご紹介  (1-0) STEP0:JDKのインストールでどれを選択すれば良いか?  (1-1) ST …

JavaのJDBC接続でjava.sql.SQLRecoverableException: Closed Connectionが発生した時の解決メモ

(0)目次&概説 (1) エラー事象の概要  (1-1) エラーの発生状況  (1-2) エラーメッセージ全文 (2) エラーの原因 (3) エラーの対処方法  (3-1) エラーの修正内容  (3- …

JavaのBigDecimalの使い方+初期化・四則演算・余り・累乗等の主要用途も紹介

<目的> (1) JavaのBigDecimalの使い方+初期化や四則演算・桁数設定等の主要用途も紹介  (1-1) 宣言の方法  (1-2) 代表的な用途(足し算・引き算・掛け算・割り算)  (1- …

TwitterのAPIライブラリ(Twitter4j)で「いいね数」や「リツイート数」を取得する方法

<目次> (1) TwitterのAPIライブラリ(Twitter4j)で「いいね数」や「リツイート数」を取得する方法  (1-1) 構文  (1-2) サンプルプログラム (1) TwitterのA …

TomcatでEclipseを使う際にserver.xmlを編集しても上書きされる事象の対処方法

<目次> (1) TomcatでEclipseを使う際にserver.xmlを編集しても上書きされる事象の対処方法  (1-1) 発生状況・エラーメッセージ  (1-2) 原因  (1-3) 対処法 …

  • English (United States)
  • 日本語
Top