对于rails上的twitter gem,我如何有效地调用user_timeline并为多个用户抓取推文?

时间:2014-09-26 21:35:58

标签: ruby-on-rails ruby twitter bearer-token

在我的rails控制器中,我有一个名为" usernames"只有10个推特手柄没有" @"符号。我将这些用户的最新推文存储在名为" tweets"的数组中。具有以下任务:

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基准模块并发现了"推文"分配需要2.5秒才能运行。我猜它花了这么长时间,因为user_timeline函数被调用了10次,因此进行了10次单独的连接。

寻找一个解决方案,我去了sferik's github for configuration options,似乎"持票人tokan"根据页面上的这个解释,我需要的是:

  

client.user(" sferik&#34)

     

注意:第一次调用此方法时,它将发出两个API请求。首先,它将获取访问令牌以执行请求。然后,它将获取所请求的用户。对于使用同一客户端发出的后续请求,将缓存访问令牌,但您可能希望手动获取访问令牌一次,并在初始化客户端时使用它以避免每次发出两个请求。

     

client.bearer_token

     

此令牌永不过期,除非失效,否则不会更改。获得持票人令牌后,您可以使用它来初始化客户端,以避免提出额外请求。

  1. 我还没能找到我的应用程序的持票人或者弄清楚如何获得一个
  2. 如果这是我的问题的解决方案,或者我还应该寻找其他什么,我不是100%。
  3. 想法?

    在线搜索,我看到有人建议在我的Twitter帐户上列出这些用户,然后向"列表/状态"发出请求。这不是一个选项,因为" usernames"中的10个用户名。每次设置数组时,数组都不同。

1 个答案:

答案 0 :(得分:0)

  1. 在gem之外,您可以POST /oauth2/token
  2. 中描述的{{1}}请求持票人令牌