如何在 Rails 中执行异步请求?
Posted
技术标签:
【中文标题】如何在 Rails 中执行异步请求?【英文标题】:How to perform asynchronous requests in rails? 【发布时间】:2016-03-24 22:14:40 【问题描述】:我想访问geocoding api 来获取给定地址的纬度和经度,但是有一个limitation,所以我创建了多个 gmail 帐户来使用多个 API 密钥访问地理编码 API,以便我可以访问 API没有任何 OVER_QUERY_LIMIT 问题
-
如何使用 sidekiq 迭代这些 API 密钥以获取纬度和经度?
有没有更好的方法可以在不使用sidekiq的情况下实现上述目标
【问题讨论】:
【参考方案1】:您可以使用变量对请求进行统计,并在您耗尽其限制时在 API 凭据之间切换。此外,您可能希望进行一些缓存以减少这些 API 调用。
【讨论】:
【参考方案2】:这取决于您要达到的目标。
如果您有一个基于消费者的大型应用程序,其中包含大量地理编码请求,我建议您使用客户端地理编码。谷歌提供了一个javascript SDK。您仍然会有查询限制,但您将其转移给您的客户。所以每个客户都会有自己的限制。所以你不太可能超过这个限制。像Foursquare 这样的大网站也这样做。
如果您想确保坐标确实是地址的坐标,您必须在服务器端进行调用。这在基于消费者的应用程序中不是非常可取的。您将不得不pay Google 进行更多查询。这不是非常可扩展的。除非您构建的企业应用程序用户少得多。
但是,我不建议您尝试通过创建不同的帐户来智取 Google。 Google 知道这些技巧并将禁用您的帐户。如果发生这种情况,您的应用将无法再进行地理编码。然后——轰!! 500 Internal server error
.
我希望这会有所帮助!
编码愉快:)
【讨论】:
以上是关于如何在 Rails 中执行异步请求?的主要内容,如果未能解决你的问题,请参考以下文章
Rails Turbo render_async:将 JWT 添加到异步请求
如何从请求中返回结果,以及在 NodeJS 中执行异步任务但没有回调之后