标签: throttling

如何在中间件 Laravel 5 中捕获“尝试次数过多”异常

我正在构建我的 API,并且成功地捕获了我在路由周围设置的中间件上的一些错误,如下所示:

Route::group(['middleware' => \App\Http\Middleware\ExceptionHandlerMiddleware::class], function() {

    Route::resource('/address', 'AddressController');

    Route::resource('/country', 'CountryController');

    Route::resource('/phone', 'PhoneController');

    Route::resource('/user', 'UserController');
});
Run Code Online (Sandbox Code Playgroud)

中间件设法捕获以下异常:

  • Illuminate\Database\Eloquent\ModelNotFoundException
  • Illuminate\Validation\ValidationException
  • Exception

这太棒了。我还知道控制路线中尝试次数的节流机制。因此,我通过邮递员攻击了我的路线http://localhost:8000/api/user,直到出现错误too many attemp

异常在位于以下位置的文件中引发:

/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php
Run Code Online (Sandbox Code Playgroud)

由于这个论坛主题,我还设法获得了它抛出的异常类型:Symfony\Component\HttpKernel\Exception\TooManyRequestsHttpException

所以最后我的中间件看起来像这样:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Validation\ValidationException;
use Symfony\Component\HttpKernel\Exception\TooManyRequestsHttpException;
use Exception;

class ExceptionHandlerMiddleware
{
    public function handle($request, Closure $next)
    {
        $output = $next($request);

        try {
            if( ! is_null( $output->exception ) ) {
                throw new $output->exception;
            }

            return $output;
        }
        catch( TooManyRequestsHttpException $e ) { …
Run Code Online (Sandbox Code Playgroud)

php middleware throttling laravel laravel-5

3
推荐指数
1
解决办法
1万
查看次数

如何实现 Laravel Redis 限速

尝试为队列实现速率限制以每秒运行一项作业,该作业向外部 API 发出 HTTP 请求并加载一种类型的数据。

但不知道如何称呼这份工作,尝试了不同的选择但没有奏效。在示例中:

Redis::throttle('key')->allow(10)->every(60)->then(function () {
    // Job logic...
}, function () {
    // Could not obtain lock...
    return $this->release(10);
});
Run Code Online (Sandbox Code Playgroud)

将在// Job logic...调度队列中放入什么并且此代码将在队列类中?以及如何命名key?我的队列名称是loader.

有什么帮助吗?

queue throttling redis laravel

3
推荐指数
1
解决办法
6145
查看次数

如何重写测试设置中的一个值

如何在测试设置中重写 'user': '5/分钟' on 'user': '2/day'

REST_FRAMEWORK = {
    'DEFAULT_THROTTLE_RATES': {
         'user': '5/minute'
    }
}
Run Code Online (Sandbox Code Playgroud)

我如何使用@override_settings或带有上下文管理的mb来做到这一点?我只需要在一个测试中应用这个,我不能重写整个字典

def test_mytest(self):
    value = settings.REST_FRAMEWORK
    value['DEFAULT_THROTTLE_RATES'] = {'user':'2/day'}

    data1 = {}
    data2 = {}
    data3 = {}

with self.settings(REST_FRAMEWORK=value):
    resp1 = self.client.post(self.url, data1, format='json')
    resp2 = self.client.post(self.url, data1, format='json')
    resp3 = self.client.post(self.url, data1, format='json')

assert resp3.status_code == 429, resp3.data
Run Code Online (Sandbox Code Playgroud)

但是没有429错误,虽然值已经改变了

django throttling django-rest-framework

3
推荐指数
1
解决办法
2284
查看次数

使用钩子 setState 时油门不起作用

我在使用油门时遇到问题。使用下面的代码,油门正常工作。但是,当我取消注释时出了点问题setPosition([e.clientX, e.clientY])。油门坏了,position不用等1秒,立即更新。

import React, { useState } from 'react'
import { throttle } from 'lodash'

export default () => {
  const [position, setPosition] = useState([0, 0])
  const [x, y] = position

  const handleMouseMoveThrottle = throttle(e => {
    console.log(e.clientX, e.clientY)
    // setPosition([e.clientX, e.clientY])
  }, 1000)

  const handleMouseMove = e => {
    e.persist()
    handleMouseMoveThrottle(e)
  }

  return (
    <div
      style={{ width: 300, height: 300, border: 'solid 1px black' }}
      onMouseMove={handleMouseMove}
    >
      <div>
        Position: {x}, {y}
      </div>
    </div>
  )
} …
Run Code Online (Sandbox Code Playgroud)

throttling reactjs react-hooks

3
推荐指数
1
解决办法
1466
查看次数

Laravel 在哪里存储油门数据?

我使用 Laravel 速率限制(节流)。我想知道它在哪里存储节流数据以及如何将默认存储系统更改为 MySQL/Mariadb 或 Redis?

php throttling laravel laravel-6.2

3
推荐指数
1
解决办法
654
查看次数

Mongo DB CPU 使用率高

通常,当我们收到来自 MongoDB 的关于 CPU 高使用率的警报(如下所示)时,我们需要执行哪些检查/操作?

**系统:CPU(用户)% 已超过 95

CPU 使用率已耗尽可用资源,并且可能很快就会受到限制。确保没有索引丢失并扩大规模。请导航至系统 CPU 指标页面以查看使用情况详细信息。**

performance memory-management throttling cpu-usage mongodb

3
推荐指数
1
解决办法
2万
查看次数

如何限制Perl程序中的下载?

是否有可用于下载限制的Perl模块?我想下载某个文件,但将下载速率限制为特定的KB /秒数.

perl throttling download

2
推荐指数
1
解决办法
1241
查看次数

Django REST框架:每用户限制

我的用户需要非常高的节流阀,所以他们可以使用很多系统.是否有一种简单的方法可以让它们比其他用户更高的节流?

我环顾四周但没找到任何东西.

django throttling django-rest-framework

2
推荐指数
1
解决办法
2873
查看次数

更改TextField时,请调用api-如何进行限制?

如果我有一个文本字段,并且在该文本字段中进行了更改,那么我会调用一个函数,该函数会调用一个API,如何限制它,因此仅当用户在1秒钟内未键入任何内容时,它才会调用该函数?

我在这里迷路了..任何帮助都超过了欢迎。

api throttling textfield dart flutter

2
推荐指数
2
解决办法
319
查看次数

如何通过IP限制AWS Lambda或API网关?

我目前正在尝试使用S3静态网站,API Gateway和AWS Lambda设计无服务器应用程序。我想将此网站公开,所以每个用户没有API密钥。

我想防止将这些端点滥用到非常低的水平,例如给定的公共IP每5秒发出1个请求。

AWS Shield或其中任何一种服务都可能吗?

throttling amazon-web-services aws-lambda aws-api-gateway

2
推荐指数
2
解决办法
356
查看次数