Django的速率限制装饰器
项目描述
django-rated
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 查看哈希)