🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Q&A

解決済

1回答

1620閲覧

Twitter REST APIの制限について

yamady

総合スコア176

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

0グッド

0クリップ

投稿2019/09/18 21:49

いつも大変お世話になっております。

現在、Twitter REST API の home_timeline を使って、アプリに登録しているユーザーのホームタイムラインを取得したいと考えています。しかし、API制限もあって、すべてを取得することができずに困っています。

Twitter::Error::TooManyRequests: Rate limit exceeded

そこで、1分に1回Twitterにアクセスして、100のツイートを取得することにしました。
具体的には下記のように実装しました。

schedule.rb

Ruby

1require File.expand_path(File.dirname(__FILE__) + "/environment") 2set :environment, Rails.env.to_sym 3set :output, "#{Rails.root.to_s}/log/cron.log" 4 5every 1.minutes do 6 begin 7 rake "scrape:twitter" 8 rescue => e 9 raise e 10 end 11end

lib/tasks/scrape.rake

Ruby

1namespace :scrape do 2 task :twitter => :environment do 3 scrape_twitter = SsrapeTwitter.new 4 ssrape_twitter.scrape 5 end 6end

lib/scrape_twitter.rb

Ruby

1class ScrapeTwitter 2 def scrape 3 @users = User.all 4 5 @users.each do |user| 6 @client = Twitter::REST::Client.new do |config| 7 config.consumer_key = Rails.application.credentials[Rails.env.to_sym][:twitter][:consumer_id] 8 config.consumer_secret = Rails.application.credentials[Rails.env.to_sym][:twitter][:consumer_secret] 9 config.access_token = user.token 10 config.access_token_secret = user.secret 11 end 12 13 @timeline = @client.home_timeline(max_id: max_id,count: 100) 14 @timeline.save 15 end 16 end 17end

APIを使う機会がなかなかありませんので、理解に苦しんでいるのですが2点ほどお伺いをしたいです。

  1. 登録ユーザーの制限について
When using application-only authentication, rate limits are determined globally for the entire application. If a method allows for 15 requests per rate limit window, then it allows you to make 15 requests per window — on behalf of your application. This limit is considered completely separately from per-user limits.

Twitterの公式ドキュメントの記載によると、単体のアプリで15分に15回までとあります。つまり、100人のユーザーが登録していたとしたら、100人で15分15回でしょうか、それとも1人で15分15回までできるのでしょうか。

  1. 1回に取得できるツイート数について

今回は100としていますが、実際にはリクエストする回数に制限はあっても、実際に取得するツイート数には制限はないという認識でもよろしいのでしょうか。つまり、1000や10000でも問題はないのでしょうか。

初歩的な質問で大変申し訳ございませんが、お知恵を拝借させていただければと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ドキュメント読めばよいです。
Rate Limiting

あと、理解できなければ試すと理解が進みます。

投稿2019/09/18 22:05

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamady

2019/09/19 05:16

ご回答いただきありがとうございます。 確認してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問