Цикл событий для Twitter4r - PullRequest
1 голос
/ 29 июня 2019

Существует ли цикл событий для Twitter4R, где, когда пользователь упоминает дескриптор бота, он уведомляет бота?

Я пытался заставить его работать с проверкой client.mentions_timeline каждые 5 секунд, чтобы увидеть, есть ли новые твиты, в которых упоминается ручка бота. Это сработало, однако, ограничение скорости часто превышалось время после проверки client.mentions_timeline много раз. Есть ли способ, которым я могу оптимизировать это или я что-то упустил?

         6: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/twitter-6.2.0/lib/twitter/rest/users.rb:237:in `user'
         5: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/twitter-6.2.0/lib/twitter/rest/users.rb:53:in `verify_credentials'
         4: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/twitter-6.2.0/lib/twitter/rest/utils.rb:57:in `perform_get_with_object'
         3: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/twitter-6.2.0/lib/twitter/rest/utils.rb:72:in `perform_request_with_object'
         2: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/twitter-6.2.0/lib/twitter/rest/utils.rb:50:in `perform_request'
         1: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/twitter-6.2.0/lib/twitter/rest/request.rb:39:in `perform'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/twitter-6.2.0/lib/twitter/rest/request.rb:81:in `fail_or_return_response_body': Rate limit exceeded (Twitter::Error::TooManyRequests)

Спасибо!

1 Ответ

1 голос
/ 30 июня 2019

Драгоценный камень - это просто оболочка для API, поэтому обратитесь к Ограничениям скорости в Twitter, где мы находим это:

GET конечные точки Стандартные ограничения скорости API, описанные в этомТаблица относится к GET (чтение) конечных точек.Обратите внимание, что конечные точки, не перечисленные в диаграмме, по умолчанию составляют 15 запросов на выделенного пользователя.Все окна запроса имеют продолжительность 15 минут.Эти ограничения скорости применяются только к стандартным конечным точкам API, не применяются к премиальным API.

GET statuses/mentions_timeline  statuses    75  0

Таким образом, похоже, что вы можете достичь этой конечной точки только 75 раз за 15 минут, и простая математика дляэто

15 * 60 / 75 = 12

Так что, вероятно, вам не следует нажимать его чаще, чем раз в 12-15 секунд, чтобы быть в безопасности.

Вы также можете отслеживать ваши звонки с течением времени, спасите исключениеи повторите запрос в случае, если вы достигли ограничения скорости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...