【问题标题】:Best Way to log API Calls, per minute / per hour记录 API 调用的最佳方式,每分钟/每小时
【发布时间】:2010-07-26 15:48:39
【问题描述】:

我们在 Rails 网络服务中使用反向地理编码,并且在通过 geokit 使用 Google 反向地理编码器时遇到了配额问题。我们还在实施 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

谢谢!

【问题讨论】:

    标签: ruby-on-rails reverse-geocoding


    【解决方案1】:

    这里的第一部分没有回答您提出的问题,但如果以前没有考虑过,我会有所帮助。

    您是否考虑过不使用服务器(即通过 Geokit)进行反向地理编码,而是由客户端完成?换句话说,一些 Javascript 加载到用户的浏览器中,代表您的服务进行 Google 地理编码器 API 调用。

    如果您的应用程序可以支持这种方法,那么这有很多优点:

    • 您解决了配额问题,因为您的分布式用户每个人都有自己的每日配额,并且不会消耗您的配额
    • 您不会为此花费自己的服务器资源

    如果您仍想记录地理编码器查询并且担心对主应用程序数据库的性能影响,那么您可以考虑以下选项之一:

    1. 只需为日志记录(写入密集型)创建一个单独的数据库(或多个数据库)并同步进行。可能是关系型,但也许 MongoDB 或 Redis 也可以工作
    2. 记录到文件系统(使用自定义记录器),然后将它们分批 cron 到结构化的、可查询的存储中。如果效果更好,存储可以是外部存储,例如在 Amazon 的 S3 上。
    3. 每次执行地理编码时只需将一条记录写入 SimpleGeo,然后将自定义元数据添加到这些记录中,以将它们与您自己的模型联系起来

    【讨论】:

    • 关于 javascript - 我很乐意,但这是一个 API,因此 iphone 正在发送他们的 lat/lng 并且无法进行反向编码。由于我们在 Heroku,我认为我不能做文件系统日志。所以也许 MongoDB 可能是要走的路。
    • 所以它是一个 iPhone 应用程序,而不是在那里运行的浏览器,我猜你无法控制如何收集或发送 lat/lng 数据?你对 Heroku 上的文件系统是正确的。但是你可以使用 S3 并且只为存储(而不是带宽)付费,或者使用他们最近推出的 MongoHQ 插件
    • 对所有帐户都正确!倾向于 MongoHQ 实施......关于按时间段分组的任何想法? (每秒收到一个请求)?你会要求.all.group_by the second/hour/whatever?
    猜你喜欢
    • 2018-02-13
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多