Twitter ユーザー ID のリストを反復処理し、follower_ids のリストをファイルに保存するスクリプトを作成しました。数回使用しましたが問題ありません。長いリストの場合、次のコードを追加して、すべての GET リクエストの前にレート制限をチェックし、レート制限されそうな場合はスリープします。
rate_limit_json = api.rate_limit_status()
remaining_hits = rate_limit_json["remaining_hits"]
print 'you have', remaining_hits, 'API calls remaining until next hour'
if remaining_hits < 2:
dtcode = datetime.utcnow()
unixtime = calendar.timegm(dtcode.utctimetuple())
sleeptime = rate_limit_json['reset_time_in_seconds'] - unixtime + 10
print 'waiting ', sleeptime, 'seconds'
time.sleep(sleeptime)
else:
pass
スクリプトの先頭に、この Oauth の宣伝文句を設定しました。
auth = tweepy.OAuthHandler('xxxx', 'xxxx')
auth.set_access_token('xxxx', 'xxxxx')
api = tweepy.API(auth)
私が繰り返し行っている呼び出しは次のとおりです。
follower_cursors = tweepy.Cursor(api.followers_ids)
そのため、今では、何回呼び出しても、Twitter が「レート制限を超えました。クライアントは 1 時間あたり 350 を超えるリクエストを行うことはできません」というメッセージを返すまで、「残りのヒット数」は 150 のままです。
レート制限チェッカーは、許可されていない IP アドレスのレート制限 (150) を報告しているようですが、呼び出しはアプリのレート制限 (350) に対してカウントされています。
レート制限チェッカーを実際にアプリのレート制限を再度チェックするように調整するにはどうすればよいですか?