制限情報
TwitterAPI にはアクセス回数に制限がありますが(たとえば、15分に180回までのような)、その情報はレスポンス・ヘッダで確認できます。
ヘッダから以下のキー名称で情報を取得します。
- X-Rate-Limit-Remaining : アクセス可能な残りの回数
- X-Rate-Limit-Reset : アクセス回数がリセットされる時間
python ではこんな感じ
1 2 3 4 5 6 7 |
session = OAuth1Session(CK, CS, AT, AS) url = 'https://api.twitter.com/1.1/search/tweets.json' res = session.get(url, params = {'q':u'検索ワード', 'count':10}) print res.headers['X-Rate-Limit-Remaining'] print res.headers['X-Rate-Limit-Reset'] |
小文字でも動いてしまう
ところで、このキー名称は、なぜか分かりませんが、すべて小文字にしても情報を取得できます。
- X-Rate-Limit-Remaining ⇒ x-rate-limit-remaining
- X-Rate-Limit-Reset ⇒ x-rate-limit-reset
Twitter のサイト を見ると各単語の先頭が大文字になっているので、前者が正解だと思いますが、ときどきネットで、すべて小文字でアクセスするサンプルを見かけます。
もちろん、それはそれで動くのですが、ちょっと気になります。なぜかと言うと、
x-rate-limit-remaining が入ってない現象が
以前、大量のツイートをダウンロードするために TwitterAPI を何百回も呼び続けるというプログラムを作ったのですが(こちら)、その際、小文字で x-rate-limit-remaining と書くと keyError(値が取得できないことを意味する)が、ごく稀にですが発生しました。
つまり、レスポンス・ヘッダに x-rate-limit-remaining がセットされていない、という理由で怒られたわけです。レスポンスを作るのは Twitter 側ですから、こちらではどうしようもなく・・・
試しに、キー名称を先頭大文字の X-Rate-Limit-Remaining にしたところ、keyError は出なくなりました。
くわしく調べたわけではないのですが、先頭大文字にしたほうが安全ではないかという 2016年6月時点の情報です。
キー名称を先頭大文字の X-Rate-Limit-Remaining にしたところ、keyError の頻度が減りましたが、やはり、入っていないことがたまにあります。
対策は、こちらを参考にしてください。
x-rate-limit-remaining が入ってない現象が