Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么我会得到;“查询”中指定的术语太多;对于Twitter API 100用户限制内的调用?_Ruby On Rails_Twitter_Twitter Gem - Fatal编程技术网

Ruby on rails 为什么我会得到;“查询”中指定的术语太多;对于Twitter API 100用户限制内的调用?

Ruby on rails 为什么我会得到;“查询”中指定的术语太多;对于Twitter API 100用户限制内的调用?,ruby-on-rails,twitter,twitter-gem,Ruby On Rails,Twitter,Twitter Gem,我正在使用和,它们都声称每次通话限制为100个用户。我将我的呼叫限制为90个用户,但我仍然间歇性地收到一个查询中指定的术语太多错误。。。当我将我的呼叫限制在40个或更少的用户时,我甚至会间歇性地出现这个错误 它似乎只适用于我所代表的某些用户:我可以迭代一些用户,但我迭代的一些用户会错误地在查询中指定过多的术语,除非我严格限制我的调用(例如,一次10个用户)。。。但这种严重的限制带来了另一个问题——当我尝试给用户打这么多小的电话时,我达到了速率限制 我正在使用user.all.each do |

我正在使用和,它们都声称每次通话限制为100个用户。我将我的呼叫限制为90个用户,但我仍然间歇性地收到一个
查询中指定的术语太多
错误。。。当我将我的呼叫限制在40个或更少的用户时,我甚至会间歇性地出现这个错误

它似乎只适用于我所代表的某些用户:我可以迭代一些用户,但我迭代的一些用户会错误地在查询中指定过多的术语,除非我严格限制我的调用(例如,一次10个用户)
。。。但这种严重的限制带来了另一个问题——当我尝试给用户打这么多小的电话时,我达到了速率限制

我正在使用
user.all.each do | u |
对数据库中的每个用户进行迭代,并使用以下内容为该块中的每个用户创建到Twitter的连接:

  client = Twitter::Client.new(
    :consumer_key => TWITTER_CONSUMER_KEY,
    :consumer_secret => TWITTER_CONSUMER_SECRET,
    :oauth_token => u.twitter_token,
    :oauth_token_secret => u.twitter_secret
  )
这是我用来从列表中删除用户的代码:

  removing_from_list.each_slice(90) do |remove_ids|
    client.list_remove_members(list_id, remove_ids)
    sleep 2
  end
此代码用于将用户添加到列表:

  adding_to_list.each_slice(90) do |adding_ids|
    client.list_add_members(list_id, adding_ids)
    sleep 2
  end

我在使用Twitter gem以及直接使用REST(Mac REST客户端)访问Twitter API时都遇到过这个问题。

我也在中发布了这个问题,在那里我收到了关于我问题的
列表添加成员的建议。这个建议是为了确保该列表不会超过500个成员,并且用户没有20多个列表。考虑到我的发现,我不确定这有多重要,但这肯定是一个很好的建议

我解决此问题的方法是,如果遇到错误,则删除并重新创建列表本身:

  removing_from_list.each_slice(99) do |remove_ids|
    begin
      client.list_remove_members(list_id, remove_ids)
      sleep 2
    rescue => error
      if error == "Too many terms specified in query"
        client.list_destroy(list_id)
        client.list_create('ListName', :description => 'List Description')
        list_id = client.list('ListName').id
      end
    end
  end
完成此操作后,列表的行为符合预期。此外,我不必多次删除/重新创建列表。因此,我非常有信心地声明,这要么是列表本身的问题,要么是在删除/重新创建列表之前碰巧驻留在列表中的用户的问题