我正在使用list/members/create_all和list/members/destroy_all,它们都声称每次通话限制为100个用户。我将我的呼叫限制为90个用户,但我仍然间歇性地收到Too many terms specified in query
错误...当我将呼叫限制为40个用户或更少时,我甚至会间歇性地收到此错误。
它似乎仅适用于我代表以下方进行调用的某些用户:我可以使用我的90个用户限制迭代某些用户,但我迭代的一些用户将使用{{1除非我严格限制我的电话(例如,一次只有10个用户)......但是这个严重的限制只会出现一个不同的问题 - 当我尝试为用户拨打这么多小电话时,我点击了速率限制。
我正在使用Too many terms specified in query
在我的数据库中迭代每个用户,并且我正在为该块中的每个用户创建一个与Twitter的连接:
User.all.each do |u|
这是我用来从列表中删除用户的代码:
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
我在使用Twitter gem以及直接使用Rested(Mac REST客户端)访问Twitter API时遇到过这个问题。
答案 0 :(得分:0)
我还在REST API v1.1 Developer Discussions中发布了这个问题,我收到了关于list_add_members
部分问题的建议。该建议是为了确保列表不超过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
完成此操作后,列表按预期运行。此外,我不必多次删除/重新创建列表。因此,我非常有信心声明它是列表本身的问题,或者是在删除/重新创建之前碰巧驻留在列表中的用户。