<目次>
(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の使用回数に閾値を設ける
(1-2) 対策②:「APIの残量」と「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; }