如何在rails中执行异步请求?

时间:2015-12-18 08:45:33

标签: ruby-on-rails google-maps asynchronous geocoding sidekiq

我想访问geocoding api以获取给定地址的纬度和经度,但是有一个limitation,因此我创建了多个gmail帐户来访问具有多个API密钥的地理编码API,以便我可以在没有任何 OVER_QUERY_LIMIT 问题

的情况下访问API
  1. 如何使用sidekiq迭代这些API密钥以获取经度和纬度?
  2. 有没有更好的方法来实现上述目的而不使用sidekiq

2 个答案:

答案 0 :(得分:0)

您可以使用变量在结束时执行请求记帐,并在耗尽其限制时在API凭据之间切换。此外,您可能希望进行一些缓存以减少这些API调用。

答案 1 :(得分:0)

这取决于你想要达到的目标。

如果您有一个基于消费者的大型应用程序,其中包含大量地理编码请求,我建议您使用客户端地理编码。 Google提供了Javascript SDK。您仍然会有查询限制,但您可以将其移至您的客户端。所以每个客户都会拥有自己的限制。所以你不太可能超过这个限制。像Foursquare这样的大型网站也会这样做。

如果您想确保坐标确实是地址的坐标,您必须在服务器端进行调用。这是基于消费者的应用程序不太合适。您需要pay Google才能获得更多查询。这不是非常可扩展的。除非您构建的企业应用程序用户少得多。

但是,我不建议您尝试通过创建不同的帐户来超越Google。 Google知道这些技巧并会禁用您的帐户。如果发生这种情况,您的应用程序将无法再进行地理编码。然后 - 轰! 500 Internal server error

我希望这有帮助!

快乐编码:)