未提供项目说明

asgi-ratelimit的Python项目详细描述


ASGI费率限制

限制用户访问频率。基于ASGI。在

100%覆盖。高性能。支持常规匹配。可定制的。在

安装

# Only install
pip install asgi-ratelimit

# Use redis
pip install asgi-ratelimit[redis]

# Use jwt
pip install asgi-ratelimit[jwt]

# Install all
pip install asgi-ratelimit[full]

使用

下面的示例将限制"default"组下的用户每秒最多访问一次/second_limit,每分钟最多访问一次/minute_limit。并且"admin"组中的用户没有限制。在

^{pr2}$

阻塞时间

当用户的请求频率触发上限时,接下来一段时间内的所有请求都将返回一个429状态代码。在

示例:Rule(second=5, block_time=60),此规则将限制用户每秒最多访问5次。一旦超过此限制,接下来60秒内的所有请求都将返回429。在

自定义块处理程序

只需指定on_blocked,您就可以自定义在被阻止时调用的asgi应用程序。在

asyncdefyourself_429(scope:Scope,receive:Receive,send:Send)->None:awaitsend({"type":"http.response.start","status":429})awaitsend({"type":"http.response.body","body":b"429 page","more_body":False})RateLimitMiddleware(...,on_blocked=yourself_429)

内置身份验证函数

客户端IP

fromratelimit.auths.ipimportclient_ip

通过scope["client"]X-Real-IP获取用户IP。在

Starlette会议

fromratelimit.auths.sessionimportfrom_session

scope["session"]获取user和{}。在

如果键group不在会话中,将返回default。如果键user不在会话中,将引发一个EmptyInformation。在

Json网络令牌

fromratelimit.auths.jwtimportcreate_jwt_authjwt_auth=create_jwt_auth("KEY","HS256")

从JWT获取user和{},它们位于Authorization头中。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何为带有交互式通知的网络广播流媒体创建Android前台服务?   java如何根据文件的读取进度更新进度条?   使用aes加密来自java的解密文件中的额外字符   java选择JFrame后面的窗口   java Hibernate通过用户名上的关系加密引用   JavaGuice创建错误Magnolia   java简单控制结构(if语句)   java如何使用junit和mockito为私有void方法编写测试用例   java HikariCP是否始终使用mysql根目录?   java使用SSHTool将Putty私钥转换为OpenSSH私钥   用户界面Java调整拆分器框架的大小   Eclipse项目2中的java HTTP 404错误   java在JavaCV中cvCreateCameraCapture、cvCreateFileCapture等在哪里?   计时器在java中前一个任务完成后以固定的持续时间安排周期性任务