Railsコントローラーには、「@」記号のない10個のTwitterハンドルを持つ「usernames」という配列があります。これらのユーザーの最新のツイートを、次の割り当てを使用して「つぶやき」という配列に保存しています。
tweets = usernames.map{|username| $client_local.user_timeline(username,count: 1)[0].text}
$client_local は次のとおりです。
$client_local = Twitter::REST::Client.new do |config|
config.consumer_key = 'xxxx'
config.consumer_secret = 'xxxx'
config.access_token = 'xxxx'
config.access_token_secret = 'xxxx'
end
ruby ベンチマーク モジュールを使用したところ、"tweets" 割り当ての実行に 2.5 秒かかっていることがわかりました。user_timeline 関数が 10 回呼び出され、10 個の個別の接続が作成されるため、非常に時間がかかっていると思います。
解決策を探して、構成オプションについて sferik の githubにアクセスしました。このページの説明によると、「bearer tokan」が必要なようです。
client.user("sferik")
注: このメソッドを初めて呼び出すと、2 つの API リクエストが作成されます。まず、リクエストを実行するためのアクセス トークンを取得します。次に、要求されたユーザーをフェッチします。アクセストークンは、同じクライアントで行われる後続のリクエストのためにキャッシュされますが、アクセストークンを一度手動でフェッチし、クライアントを初期化するときにそれを使用して、毎回 2 つのリクエストを行うことを避けることができます。
client.bearer_token
このトークンは期限切れになることはなく、無効にされない限り変更されません。ベアラー トークンを取得したら、それを使用してクライアントを初期化し、余分なリクエストを行わないようにすることができます。
- アプリのベアラー トークンが見つからないか、取得方法がわかりません
- これが私の問題の解決策である場合、または探しているものが他にある場合、私は 100% ではありません。
アイデア?
オンラインで検索すると、私の Twitter アカウントでこれらのユーザーのリストを作成することを提案し、「リスト/ステータス」へのリクエストを行っている人がいます。「usernames」配列内の 10 個のユーザー名は、配列が設定されるたびに異なるため、これはオプションではありません。