发布于 2015-09-13 08:01:35 | 227 次阅读 | 评论: 0 | 来源: PHPERZ
有些场合,我们并不想让用户在短时间内过于频繁地调用某个动作。 这时,可以让Piston在全局的基础层面上限制用户请求,在限制期限内有效地阻止客户端访问。
Piston在使用OAuth的情况下,会利用OAhth在每个消费者应用的底层对客户端访问进行限制。 若没有使用OAuth,受限规则会取决于已登录用户;对于匿名请求,受限规则则取决于客户端IP地址。
限制客户端请求是通过添加@throttle装饰器实现的。该装饰器有两个必填参数和一个可选参数。
第一个参数是某个时间段内允许的请求数量。
第二个参数就是该时间段的时长,以秒为单位。
第三个参数是一个可选的字符串, 会被添加到缓存key中。我们可以利用该参数为一组或一个动作进行限制。不提供该参数的话,Piston默认只对当前动作进行限制。
举个例子:
#!python
@throttle(5, 10*60)
def create(...):
在这个例子中,客户端在10分钟内调用’create’的次数会限制在5次。
也可以对动作分组限制:
#!python
@throttle(5, 10*60, 'user_writes')
def create(...):
@throttle(5, 10*60, 'user_writes')
def update(...):