问题标签 [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.
php - 我应该限制或减少我的数据库查询吗?
我正在创建一个 PHP 脚本,它将文本文件中的一些数据导入 MySQL 数据库。这些文本文件非常大,一个平均文件将有 10,000 行,每行对应于我想要在我的数据库中的一个新项目。(我不会经常导入文件)
我担心从文件中读取一行,然后执行 INSERT 查询,连续 10,000 次可能会导致一些问题。我有更好的方法吗?我应该对所有 10,000 个值执行一次 INSERT 查询吗?还是会一样糟糕?
也许我可以达到一个媒介,一次执行 10 或 100 个条目。真的我的问题是我不知道什么是好的做法。也许连续 10,000 个查询很好,我只是担心什么。
有什么建议么?
php - 我应该使用 Sleep() 还是拒绝它们
我实现了一个延迟系统,以便我认为滥用的任何 IP 都会通过 Sleep() 自动获得增量延迟。
我的问题是,如果攻击者只是在延迟的同时继续打开新实例,这是否会导致 CPU 使用率增加并因此杀死我的网站?或者 sleep() 命令是否使用最少的 CPU/内存,并且不会对小脚本造成太大负担。我不想完全否认他们,因为我宁愿他们不以明显的方式知道限制,但愿意听我为什么要这样做。
[请不要讨论为什么我认为在一个小网站上滥用 IP,原因如下:我最近构建了一个脚本,它是一个页面并将信息返回给用户,我注意到一些 IP 向我愚蠢的小脚本发送垃圾邮件。经常卷曲有时会使我的结果无法从服务器即时轮询中获得,并且合法用户会被他们的结果搞砸。]
ruby-on-rails - Twitter API 错误 - 推文提供了错误的 User_id。变通?
我正在寻找解决此已发布 Twitter API 错误的方法:http ://code.google.com/p/twitter-api/issues/detail?id=214
当您获取推文时,推文会返回不正确的 User_id。但是,它确实为您提供了正确的屏幕名称。
我的目标是使用 API 做两件事:
获取我的 twitter 帐户的所有关注者,这对于 ruby 脚本来说是微不足道的:
myfollowers = Twitter.follower_ids("justinzollars")
(twitter gem)对应于这个 api 调用:https ://dev.twitter.com/docs/api/1/get/followers/ids仅保存来自单个用户的推文。https://dev.twitter.com/docs/api/1/get/search
问题是第一个 api 调用返回user_ids
,而 tweets 搜索调用返回from_user_id_str
(user_name)。我不想进行数以万计的 api 调用,向 twitter 询问从 tweets search api 调用返回user_id
的每个from_user_id_str
调用。
我怎样才能有效地解决这个问题?
api - Twitter API 错误的用户/使用 oAuth 查找的速率限制
我正在尝试使用 oAuth 获取大约 400 个用户的用户/查找。结果数据还可以,但是当我检查速率限制时,它是基于 ip 而不是 oAuth。我用“http://api.twitter.com/1/account/verify_credentials.xml”检查了 oAuth 凭据,结果没问题。有人遇到同样的问题吗?
PS 获取主页时间线推文使用正确的速率限制。
谢谢!斯特凡
java - 摆动速率限制
我有一个很长的重绘操作,我想对其进行速率限制,即确保最多每 N 毫秒调用一次。
我目前的解决方案有些不尽人意:我使用Timer
持续时间短的 Swing,restart()
每当我收到事件时我都会使用它。这确保如果事件在 N 毫秒窗口内发生,则不会触发重绘(即重绘将在事件和 N 毫秒“安静”时间过去后发生)。
我想要的是确保在第一个事件后最多 N 毫秒调用重绘,并且重绘周期最多为 N。有什么想法吗?(没有记录调用start
已经启动的效果Timer
)。
python - 限制 Python 线程的并发性和速率
给定多个线程,我想将调用工作函数的速率限制为每秒一个。
我的想法是跟踪上次在所有线程中进行调用的时间,并将其与每个线程中的当前时间进行比较。那么如果current_time - last_time < rate
. 我让线程休眠了一会儿。我的实现出了点问题——我想我可能对锁的工作方式有错误的认识。
我的代码:
我希望每秒能看到一个呼叫do_work
,但是,我同时接到 2 个呼叫(每个线程 1 个呼叫),然后是一秒钟的暂停。怎么了?
好的,一些编辑。简单地限制将项目放入队列的速度的建议很好,但是我记得我必须处理工作人员将项目重新添加到队列中的情况。典型示例:网络任务中的分页或后退重试。我想出了以下内容。我想对于实际的网络任务,eventlet/gevent 库在资源上可能更容易,但这只是一个例子。它基本上使用优先级队列来堆积请求,并使用额外的线程以均匀的速率将项目从堆中铲到实际的任务队列中。我模拟了工人重新插入堆中,重新插入的物品首先被处理。
wcf - WCF REST 服务拒绝服务防御
我已经创建了一个 WCF REST 搜索服务,现在想知道如何实施拒绝服务防御来限制请求的数量。
java - 给定场景的速率限制算法建议
实现以下速率限制用例的最佳机制是什么。可以使用像令牌桶这样的通用算法,但我希望实现在 memcached 的上下文中。感谢您对此的帮助。
- 一天只允许来自客户 ABC 的 100 个电话。
- 一个小时内只允许客户 ABC 进行 50 次 API 调用。
- 在一小时内只允许客户 ABC 对任何用户 ID 进行 5 次 API 调用。
api - 如何对 API 进行速率限制
限制 API 请求的最佳方法是什么?基本上,我们希望将用户限制为每小时 360 个 API 请求(每 10 秒一个请求)。想到的是跟踪每个 API 请求和存储:
如果 ip-address 请求大于 360,只需返回一个标头:
然后每小时回滚计数器每小时请求。这似乎是一种非常低效的方法,因为我们必须对每个 API 请求进行 MySQL 查询以增加计数器。此外,我们需要一个 cron 任务来每小时重置所有计数器。
有没有更优雅/高效的解决方案?
javascript - 速率限制以防止 ExpressJS 中的恶意行为
有人让我意识到我正在处理的应用程序中的一些缺陷(主要是在前端的 JavaScript 中),这使得有可能同时单击大量按钮并发送大量事务电子邮件。这显然不好。
我认为在 ExpressJS 中处理此问题的一种方法是使用app.all()
计算在特定时间范围内发生的请求数。我会将其存储在带有时间戳的会话元数据中,如果在 Y 时间内发生超过 X 个请求,我会将它们切断一段时间,直到限制到期。
有没有人这样做过或有任何提示/提示可以帮助我?我的应用程序中易于放入和取出的东西是可取的。谢谢!