将用户可以执行的操作数限制为每分钟一次的最佳方法是什么?
@route('/do_something/<cmd>',method=['GET','POST'])
def my_command(cmd):
# Only allow this to be executed once every 60s per user/ip.
我正在寻找服务器端解决方案,因为我想根据用户 IP 地址强制执行此操作。
将用户可以执行的操作数限制为每分钟一次的最佳方法是什么?
@route('/do_something/<cmd>',method=['GET','POST'])
def my_command(cmd):
# Only allow this to be executed once every 60s per user/ip.
我正在寻找服务器端解决方案,因为我想根据用户 IP 地址强制执行此操作。
python 中可能已经存在throttling
解决方案,更具体地说是瓶子框架。您可以使用存储和一些小脚本来推出自己的。由于您的节流时间非常短,即 1 分钟,因此 memcache 将是存储值的好选择。
3(一)。值不存在: - 将当前时间戳整数存储在内存缓存中,将此哈希作为键,TTL 1 分钟。
(b) 值存在: - 放弃请求。
这是为 redis 编写的一个非常好的装饰器(用于烧瓶框架,但也可以在其他任何地方工作):