2010-06-06 89 views

回答

3

您可以使用自定义中间件来做到这一点。你需要将数据保存在某个地方(db?)。请参阅文档以了解如何编写您的own middleware。以下是您在request object中可以获得的内容。

虽然,我建议在apache/nginx /无论你使用什么。

+1

特别是对于你的情况,如果你想限制POSTs并且不能使用Apache/nginx规则来实现,请试试这个:http://djangosnippets.org/snippets/2017/ – 2010-06-06 08:44:22

2

看看Simon Willison的ratelimitcache。就像名称所暗示的那样,它使用Django的缓存框架来存储限速器的状态。还有一个blog post,详细介绍了速率限制器的工作原理。

+0

我知道这是旧的,但是,这是否支持服务器自动缩放?像这样坚持到所有的服务器实例? – rrw 2016-03-01 07:32:42

+1

@richmondwang取决于您的缓存后端是否在所有机器之间共享。如果您在每台计算机上使用本地memcache,则速率限制将为每台计算机,但如果使用共享redis群集作为高速缓存,则速率限制也将被共享。 但是,我强烈推荐使用更新和更新的解决方案,例如https://django-ratelimit.readthedocs.org/en/latest/ – 2016-03-01 20:23:15