Лучший способ регистрировать вызовы API, за минуту / час - PullRequest
6 голосов
/ 26 июля 2010

Мы используем обратное геокодирование в веб-сервисе rails, и у нас возникли проблемы с квотами при использовании обратного геокодера Google через geokit. Мы также внедряем сервис simple-geo, и я хочу иметь возможность отслеживать, сколько запросов в минуту / час мы делаем.

Какие-либо предложения по отслеживанию наших вызовов обратного геокодирования?

Наш код будет выглядеть примерно так: Вы бы сделали что-нибудь из этого?

  • Добавить пользовательский регистратор и обрабатывать в фоновом режиме ежедневно
  • Используйте супер-фантастический драгоценный камень, о котором я не знаю, который делает квоты и рейтинг легко
  • Вставьте в базу данных вызов и выполните там запросы.

Примечание: мне не нужны данные в режиме реального времени, я просто хочу иметь возможность узнать через час, каковы наши обычные и максимальные запросы в час. (и всего ежемесячных запросов)

def use_simplegeo(lat, lng)
  SimpleGeo::Client.set_credentials(SIMPLE_GEO_OAUTHTOKEN, SIMPLE_GEO_OAUTHSECRET)
  # maybe do logging/tracking here?
  nearby_address = SimpleGeo::Client.get_nearby_address(lat, lng)

  located_location = LocatedLocation.new
  located_location.city = nearby_address[:place_name]
  located_location.county = nearby_address[:county_name]
  located_location.state = nearby_address[:state_code]
  located_location.country = nearby_address[:country]
  return located_location

end

Спасибо!

1 Ответ

2 голосов
/ 26 июля 2010

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

Вы смотрели на то, что вы не делали обратное геокодирование с помощью вашего сервера (т.е. через Geokit)но вместо этого сделав это клиентом?Другими словами, некоторые Javascript, загруженные в браузер пользователя, вызывают вызовы API геокодера Google от имени вашей службы.

Если ваше приложение может поддерживать этот подход, это дает ряд преимуществ:

  • Вы справляетесь с проблемой квот, потому что каждый из ваших распределенных пользователей имеет собственную суточную квоту и не использует свою
  • Вы не тратите собственные ресурсы сервера, делая это

Если вы все еще хотите регистрировать свои запросы геокодера и вас беспокоит влияние на производительность вашей основной базы данных приложений, вы можете рассмотреть один из следующих вариантов:

  1. Просто создайте отдельную базу данных (или базы данных).) для регистрации (которые пишут интенсивно) и делают это синхронно.Может быть реляционным, но, возможно, MongoDB или Redis могут работать либо
  2. Записать в файловую систему (с помощью специального регистратора), а затем поместить их порциями в структурированное, запрашиваемое хранилище позже.Хранилище может быть внешним, например, в Amazon S3, если это работает лучше.
  3. Просто записывайте запись в SimpleGeo каждый раз, когда вы делаете геокод, и добавляете пользовательские метаданные в эти записи, чтобы связать их с вашей собственной моделью.(s)
...