问题标签 [rate-limiting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-app-engine - Google App Engine Cloud 基础架构上的 Stack Exchange API 兼容请求限制实现
我一直在为 Stack Exchange 编写 Google Chrome 扩展程序。这是一个简单的扩展,可让您跟踪您的声誉并在 Stack Exchange 网站上收到评论通知。
目前我遇到了一些我自己无法处理的问题。我的扩展使用 Google App Engine 作为后端向 Stack Exchange API 发出外部请求。扩展程序对单个站点上的新评论的每个单个客户端请求都可能导致对 api 端点的大量请求以准备响应,即使对于非 skeetish 用户也是如此。普通用户至少在 Stack Exchange 网络的 3 个站点上拥有帐户,有些拥有 > 10 个!
Stack Exchange API 有请求限制:
单个 IP 地址每天只能发出一定数量的 API 请求(10,000)。
如果我在 5 秒内从单个 IP 地址发出超过 30 个请求,API 将切断我的请求。
很明显,所有请求都应限制为每 5 秒 30 次,目前我已经基于带有 memcached 的分布式锁实现了请求限制逻辑。我使用 memcached 作为一个简单的锁管理器来协调 GAE 实例的活动并限制 UrlFetch 请求。
但我认为将如此强大的基础设施限制为每 5 秒发出不超过 30 个请求是一个很大的失败。这样的 api 请求率不允许我继续开发新的有趣和有用的功能,并且有一天它会完全停止正常工作。
现在我的应用程序有 90 个用户并且还在增长,我需要提出如何最大化请求率的解决方案。
众所周知,App Engine 通过相同的不同 IP 池发出外部 UrlFetch 请求。我的目标是编写请求限制功能,以确保符合 api 使用条款并利用 GAE 分布式功能。
所以我的问题是如何在遵守 api 使用条款和利用 GAE 分布式功能的同时提供最大的实际 API 吞吐量。
建议使用另一个平台/主机/代理在我看来是没用的。
jquery - 如果您使用 (&callback=) 对受 IP 地址速率限制的站点进行客户端 getJSON() 调用,他们会看到您的站点还是最终用户的站点?
如果您的 Web 应用程序使用对外部源的 Web 服务 API 调用,其中一些源将根据 IP 地址对您进行速率限制。
如果您从客户端 JavaScript进行这些调用——这意味着它们是由最终用户的浏览器操作触发的——远程站点(发送回 JSON 数据)是否会看到您站点的 IP 地址或终端的 IP 地址-user (出于此基于 IP 地址的速率限制的目的)?
我的理解是,通过&callback=
在数据源URL中使用,你会发出一个JSONP
请求,这意味着远程主机看到的地址是最终用户的地址,而不是你站点的地址。
例如:
像上面这样的调用会被视为来自最终用户的 IP 地址而不是来自您的 Web 应用程序的服务器 IP 地址,这是否正确?
php - 如何对公共 API 进行速率限制?
我有一个算法可以接收输入并提供输出,我希望开发人员可以像 API 一样使用它。为了防止拒绝服务攻击和过度过度使用,我需要一些速率限制或保护。我有什么选择?我是否提供帐户和 API 密钥?这通常如何工作?对于这种情况,还有哪些其他可能的想法?
asp.net-mvc-3 - ASP.NET MVC 3 中的每日调用率限制?
我已经看到 Jarrod Dixon 的解决方案(在 ASP.NET MVC 中实现请求限制的最佳方式?)用于实现每秒调用速率限制。我现在正试图弄清楚如何为每天 N-calls 构建一个类似的过滤器。
我正在构建一个开发人员 API,其中免费帐户每天获得约 100 次调用,付费帐户获得更高的速率限制。在 MVC 3 中进行每日通话费率限制的最佳方法是什么?
twitter - 获取推特用户的所有推文,速率限制问题
我一直在尝试获取某个公共(未锁定)推特用户的所有推文。我正在使用 REST API: http://api.twitter.com/1/statuses/user_timeline.json?screen_name=andy_murray&count=200&page=1'
在浏览它允许的 16 页(页面参数)时,可以得到 3200 条推文。但后来我发现此类呼叫的速率限制是每小时 150 个(!!!),这意味着一小时内少于 10 个用户查询(每个 16 页)。(如果您进行身份验证,则允许 350,仍然非常低)
关于如何解决这个问题的任何想法?流式搜索 API 似乎不合适(?),并且有一些 Web 服务似乎确实有这些数据。
谢谢
twitter - 有什么方法可以在单个请求中获取用户的主页时间线及其用户详细信息?
我的网站上有一个 Twitter“小部件”,允许用户登录并获取他们的 Twitter 详细信息和主页时间线。我为此使用 OAuth,我对速率限制有点担心。在我的小部件中,每次需要最新数据时,我都必须发出 2 个请求。一个对用户详细信息(和最新状态)的请求(我的小部件的顶部),以及对他们的主页时间线的单独请求(我的小部件的底部)。我想知道是否有一种方法可以通过一个请求来获得两者。看起来必须做两次是浪费请求。有什么方法可以做到这一点,还是我需要向 Twitter 提出功能请求?有没有其他人认为 Twitter 总是在每个 API 请求/结果中返回最新的用户详细信息是有意义的?
amazon-ec2 - boto ElasticMapReduce 节流和速率限制
我已经通过 boto API 多次遇到来自 Amazon EMR 的速率限制,具体如下:
该操作是一次性操作请求作业流的状态,因此不应该涉及任何速率限制。有没有其他人遇到过这个问题?此外,似乎没有太多关于 EC2 和 EMR 节流/速率限制的文档......
twitter - 如何在不受速率限制的情况下每小时获得数千个 Twitter 用户的关注者数量?
我知道我可以使用“ users/show ”并获取“followers_count”,或者我可以执行“ followers/ids ”并计算返回的 ID 数量,但这两种方法的速率限制为匿名时每小时 150 个请求,并且使用 OAuth 签名时为 350。
我正在编写的程序使用 Twitter 搜索 API 来查找所有提及主题标签的内容。我使用的是 Search API 而不是 Streaming API,因为我需要查找历史推文,而不仅仅是实时。
当我找到包含主题标签的推文时,我想保存用户的句柄、推文 ID、推文时间以及用户拥有的关注者数量。由于搜索 API 不会返回每个用户的关注者数量,因此我需要为此使用另一个 API 调用。那个额外的电话给我带来了麻烦。
有没有更有效的方法来获得每小时超过 350 个用户的关注者数量?(有大量推文进来......)
ruby-on-rails - Heroku 上的速率限制 REST 请求
为了避免滥用,我想在我们的 Rails 应用程序中为 REST API 添加速率限制。在对此做了一些研究之后,看起来最好的做法是将这个责任转移到 Web 服务器中,而不是在应用程序本身中检查这个。不幸的是,这在我的情况下无法完成,因为我将应用程序托管在Heroku上,因此无法控制 Web 服务器的设置。
在这种情况下应该怎么做才能停止滥用 API?
ruby-on-rails - 限制每个用户在 rails 中的函数调用
有人知道我该怎么做吗?很难在网上找到信息。我发现最好的是它的宝石,但我只能想到如何实现该应用程序。