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

时间:2010-06-06 04:45:22

标签: python django web-applications

我在我的网站上有几个表单,并且我有几个页面具有强烈的数据库活动。我想为每个用户的请求设置上限。例如,我不希望人们在不到10秒的时间内发出超过10个请求。

有没有办法在Django中这样做?

2 个答案:

答案 0 :(得分:3)

您可以使用自定义中间件执行此操作。你需要将数据保存在某个地方(db?)。请参阅文档,了解如何编写own middleware。以下是request object中可以使用的内容。

我建议你在apache / nginx /无论你使用什么时这样做。

答案 1 :(得分:2)

看看西蒙威利森的ratelimitcache。顾名思义,它使用Django的缓存框架来存储速率限制器的状态。还有一个blog post详细说明了速率限制器的工作原理。