Ограничения Твиттера для Сайта, размещенного на Heroku - PullRequest
1 голос
/ 21 февраля 2012

У меня есть приложение rails, размещенное на Heroku с использованием собственного домена. Приложение отображает последний твит одного пользователя в верхней части каждой страницы. Чтобы избежать ограничения скорости Твиттера (150 запросов в час), у меня есть приложение, кеширующее результаты поиска в memcache (Dalli) с истечением 5 минут. Это работает хорошо, гарантируя, что приложение только когда-либо делает 12 запросов в час. Если бы это было сильно продано, это решение могло бы быть проблематичным, но, как я думаю, это нормально.

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

Это как-то связано с Героку? Что еще может быть причиной? Это как-то связано с общими IP-адресами?

Журналы:

2012-02-20T22:09:52+00:00 app[web.1]: Rendered pages/home.html.erb within layouts/application (0.8ms)
2012-02-20T22:09:52+00:00 app[web.1]: Rendered layouts/_header.html.erb (336.2ms)
2012-02-20T22:09:52+00:00 app[web.1]: Completed 500 Internal Server Error in 339ms
2012-02-20T22:09:52+00:00 app[web.1]: ActionView::Template::Error (Rate limit exceeded. Clients may not make more than 150 requests per hour.):
2012-02-20T22:09:52+00:00 app[web.1]:     5:             <p class="latest-tweet">
2012-02-20T22:09:52+00:00 app[web.1]: 
2012-02-20T22:09:52+00:00 app[web.1]:     7:                 <% if !latest_tweet%>
2012-02-20T22:09:52+00:00 app[web.1]:     8:                     <% latest_tweet = Twitter.user_timeline("sometwitterusername").first.text %>
2012-02-20T22:09:52+00:00 app[web.1]:     6:                 <% latest_tweet = Rails.cache.read "latest_tweet" %>
2012-02-20T22:09:52+00:00 app[web.1]:     9:                     <% Rails.cache.write("latest_tweet", latest_tweet, :expires_in => 5.minutes) %>
2012-02-20T22:09:52+00:00 app[web.1]:     10:                 <% end %>
2012-02-20T22:09:52+00:00 app[web.1]:     11:                 <%= latest_tweet %>
2012-02-20T22:09:52+00:00 app[web.1]:   app/views/layouts/_header.html.erb:8:in `_app_views_layouts__header_html_erb___4472938277532005844_37037700'
2012-02-20T22:09:52+00:00 app[web.1]:   app/views/layouts/application.html.erb:14:in `_app_views_layouts_application_html_erb__4101970984987800094_41561940'

Ответы [ 2 ]

6 голосов
/ 21 февраля 2012

Довольно просто. Если вы поделитесь IP-адресом с несколькими другими разработчиками, вы также поделитесь лимитами скорости.

Я рекомендую использовать аутентификацию, чтобы повысить это до 350 запросов в час, удаляя ограничения на основе IP. Это просто даст вам 350 запросов независимо от разработчиков, с которыми вы делитесь IP.

https://dev.twitter.com/docs/rate-limiting

1 голос
/ 21 февраля 2012

Рассматривали ли вы использование дополнения Apigee?

https://addons.heroku.com/apigee

Это дает вам увеличенные пределы скорости, а также некоторые другие прибамбасы.

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