跳转到主要内容

Django的速率限制装饰器

项目描述

django-rated

Downloads Version Build Status

Django的速率限制装饰器

简介

`rated` 允许您限制单个客户端在您的站点“领域”中尝试对视图的请求速率。

您可以通过装饰视图或将URL模式添加到领域映射中来控制哪些视图位于哪个“领域”。

rated 将跟踪客户端已发起的请求数量和时间,如果他们超过了限制,将返回一个可配置的响应——默认为 503 - 服务不可用

安装

装饰您的视图

@rate_limit('myrealm')
def myview(request):

配置

接下来,配置您的领域。

这是通过在RATED_REALMS设置中定义它们来完成的。这是一个字典,其中键是领域名称,值是配置字典。

领域配置可以包含以下任何键。任何省略的都将回退到以下设置的默认值。

allowed:  A list of IPs to exclude from rate limiting.
duration:   Time after which any requests are forgotten
limit:      Number of requests before limiting is applied.
code:       HTTP Status code to use when limiting is applied.
message:    Response content to return when limiting is applied.

如果您计划将所有受限视图放入一个领域,您不需要定义RATED_REALMS - 将使用默认值。

分配领域

有三种方法可以应用速率限制。可以直接装饰视图,添加具有相同URL模式名称的领域,或将URL模式名称映射到领域。

您可以通过简单地标记视图属于默认领域

from rated.decorators import rate_limit

@rate_limit
def myview(...)

将其添加到特定领域

@rated_realm(realm='other')
def myview(...)

否则,如果URL模式有名称,并且该名称与领域名称匹配,它将被视为该领域的一部分。还有一个名为RATED_REALM_MAP的映射,它将URL模式名称映射到领域名称。URL模式名称始终通过这里映射。

设置

RATED_DEFAULT_TIMEOUT

How long an access history persists with no accesses.
Default: 1 hour

RATED_DEFAULT_LIMIT

Limit of how many requests an individual client is permitted per hour.
Default: 100

RATED_RESPONSE_CODE

HTTP Status code to return when a request is limited.
Default: 429

RATED_RESPONSE_MESSAGE

Content to include in response when a request is limited.
Default: ''

RATED_REALMS

A dict of config dicts.
The keys are realm names.
The values are dicts containing overrides for 'limit', 'timeout' and 'allowed'.
Default: {}

RATED_REDIS

Redis config settings.
These will be passed directly to create a redis.ConnectionPool instance.

RATED_DEFAULT_ALLOWED

A list of IPs which are exempt from rate limiting.

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

django-rated-2.0.0.tar.gz (5.3 kB 查看哈希)

上传时间

构建分发

django_rated-2.0.0-py3-none-any.whl (6.0 kB 查看哈希)

上传时间 Python 3

由以下支持