私はlist/members/create_allとlist/members / destroy_allを使用していますが、どちらも呼び出しごとに100ユーザーの制限を主張しています。通話を90ユーザーに制限していますが、それでも断続的にToo many terms specified in query
エラーが発生します...通話を40ユーザー以下に制限すると、断続的にこのエラーが発生することもあります。
代わりに電話をかける特定のユーザーにのみ適用されるようです。90ユーザーの制限で問題なく反復できるユーザーもいますが、反復するユーザーの中にはToo many terms specified in query
、呼び出しを厳しく制限しない限りエラーが発生するものがあります。 (たとえば、一度に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の使用と、Rested(Mac RESTクライアント)を使用してTwitterAPIに直接アクセスすることの両方で発生しました。