У меня есть приложение 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'