如何限制每个用户的每分钟请求数?

2 投票
2 回答
1902 浏览
提问于 2025-04-15 23:37

我在网站上有几个表单,还有一些页面需要频繁访问数据库。我想限制每个用户的请求次数。比如说,我不希望有人在10秒钟内发出超过10次请求。

请问在Django中有没有办法做到这一点?

2 个回答

2

看看Simon Willison的ratelimitcache吧。顾名思义,它使用Django的缓存框架来存储速率限制器的状态。此外,还有一篇博客文章,详细介绍了速率限制器是如何工作的。

3

你可以通过自定义中间件来实现这个功能。你需要把数据存储在某个地方(比如数据库?)。可以查看文档,了解如何编写你自己的中间件。在请求对象中,有很多可以使用的内容。

不过,我建议你还是在apache/nginx或者你正在使用的其他服务器上进行这个操作。

撰写回答