我正在开发一个从第三方网站检索信息的类库.如果在设定的时间段(~0.5秒)内发出太多请求,则正在访问的网站将停止响应.
我的库的公共方法直接与Web服务器上的文件资源相关.换句话说,每次调用方法时,HttpWebRequest都会创建一个并将其发送到服务器.如果一切顺利,则会将XML文件返回给调用者.但是,如果这是小于0.5秒的第二个Web请求,则请求将超时.
我的困境在于我应该如何处理请求限制(如果有的话).显然,我不希望呼叫者坐在那里等待响应 - 特别是如果我完全确定他们的请求会超时.
我的库是否更有意义对我创建的Web请求进行排队和限制,或者如果客户端在API调用之间没有等待足够长的时间,我的库是否应该抛出异常?
实现Web API请求限制的常用方法有哪些?是否有任何用于常见Web框架(Rails,Django,Java等)的库可以为您提供临时禁止?
一个相关的问题表明,速率限制是通过限制IP请求在Web服务器上完成的,但这意味着所有请求都被平等对待.似乎需要由应用程序处理限制,因为:
无论如何,在MySQL中根本没有优先考虑或限制查询?
我是服务器上的DBA,看到很多未经优化的查询进入服务器,它们只会破坏CPU.我正在考虑限制以不良方式攻击数据库的某些用户.
澄清:
我意识到MySQL内置了一些设施来限制查询,连接等数量.但这些并不是真正的问题,只是在一个蓝色的月亮中,用户将发送一个未经优化的查询,我需要计时出类似的东西.
我的要求很容易理解.
我想从我的Java Web应用程序调用Web服务,每分钟限制最多10次Web服务调用.在1分钟后,我可以建立另外10个连接,无论之前的10个webservice调用的状态(已完成或未完成).
有人可以指导我实现这个的方法吗?任何教程或有用的链接?
我编写了一个从文件中获取 URL 并同时向所有 URL 发送 HTTP 请求的脚本。我现在想限制每秒请求HTTP的数量和每个接口(带宽eth0,eth1在会话等)。有没有办法在 Python 上实现这一点?
python throttling bandwidth-throttling python-multithreading
我有一个observable,它代表一个由一些外部组件触发的动作.出于这个问题的目的,我们称之为createBananaAction.我有一个bananaService方法create执行一个AJAX请求并返回创建的香蕉作为Promise.
因此,每当有一些数据从createBananaAction我们到达时,我们都想打电话bananaService.create().
代码如下所示:(使用RxJs)
this.createdBananas = createBananaAction.flatMap(() => bananaService.create());
Run Code Online (Sandbox Code Playgroud)
现在,挑战是"限制"createBananaAction,以便它只能在收到前一个香蕉后请求另一个香蕉.简单地说:永远不会有两个同时来电bananaService.create().请注意,我不想及时限制,而是在bananaService执行其操作时忽略所有传入的新香蕉请求.
我做了一些研究,找到了看似合适的pausable操作员.
我的代码现在看起来像这样:
const pausableCreateBananaAction = createBananaAction.pausable();
this.createdBananas = pausableCreateBananaAction
.do(() => pausableCreateBananaAction.pause())
.flatMap(() => bananaService.create())
.do(() => pausableCreateBananaAction.resume());
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但我不喜欢我需要这些do语句来手动触发pause和resume语句的事实.
我发现,你可以通过一个可观察到pausable那么应该产生false或true在适当的时间,但是这也需要我在受到手动推值.像这样的东西:
const letItGoThrough = new Rx.Subject();
this.createdBananas = createBananaAction
.pausable(letItGoThrough.startWith(true))
.do(() => letItGoThrough.onNext(false))
.flatMap(() => bananaService.create())
.do(() => letItGoThrough.onNext(true));
Run Code Online (Sandbox Code Playgroud)
所以现在我有了一个Rx.Subject(主题就像是RxJs的训练轮,你使用的是直到你在RxJs上经验不足而你不再需要它们.)和两次调用do. …
我们正在使用订阅SNS的Lambda来处理消息.Lambda在任何时候都有100个并发调用的安全限制.那么节流事件会发生什么?它们被拒绝还是被添加到队列中以便以后处理它们?
[访问过的页数]
asynchronous throttling amazon-web-services amazon-sns aws-lambda
如果我没有使用laravel给出的默认LoginController,如何集成laravel throttle?
这是我的控制器:
use AuthenticatesUsers;
//function for login
public function login(Request $requests){
$username = $requests->username;
$password = $requests->password;
/**to login using email or username**/
if(filter_var($username, FILTER_VALIDATE_EMAIL)) {
Auth::attempt(['email' => $username, 'password' => $password]);
} else {
Auth::attempt(['username' => $username, 'password' => $password]);
}
if(Auth::check()){
if(Auth::user()->type_user == 0){
return view('users.dashboard');
}
else{
return view('admin.dashboard');
}
}
else{
return Redirect::back()->withInput()->withErrors(['message'=>$login_error],'login');
}
}
Run Code Online (Sandbox Code Playgroud)
我想限制失败的登录,但我似乎无法使用我自己的控制器.你能帮帮我吗?
我正在我的 React 应用程序中准备微调器。
它工作得很好。但是,一些 UX 提示说,应该在等待一段时间后显示 spinner/loader/etc。对于这个例子,假设它应该是 750 毫秒。
如何节流/去抖动(我仍然不确定有什么区别)重新渲染组件?
在上面的例子中,加载状态不应该在任何时候出现。
我们可以在特定的一组路由中禁用 laravel 的节流阀吗?
这是我的代码:
Route::group(['middleware' => ['auth:sanctum']], function () {
Route::get('/sample1', 'SampleController@sample');
// more routes here
});
Run Code Online (Sandbox Code Playgroud)
我想在所有路由中禁用油门限制器Route::group。我们可以这样做吗?
throttling ×10
javascript ×2
laravel ×2
php ×2
amazon-sns ×1
api ×1
asynchronous ×1
aws-lambda ×1
c# ×1
debouncing ×1
django ×1
java ×1
laravel-5.4 ×1
mysql ×1
python ×1
reactjs ×1
rxjs ×1
tomcat6 ×1
validation ×1