python – 限制来自任何给定IP地址的请求数
发布时间:2020-12-20 12:21:32 所属栏目:Python 来源:网络整理
导读:我正在开发一个Google App Engine项目( python / webapp2),我有点担心滥用/垃圾邮件我正在创建的服务有大量请求.为了克服这种潜力,我的想法是限制应用程序某些部分在任何给定时间内每个IP地址允许的请求数.我目前的计划如下: 在每个请求我将: 从标题中获取
我正在开发一个Google App Engine项目(
python / webapp2),我有点担心滥用/垃圾邮件我正在创建的服务有大量请求.为了克服这种潜力,我的想法是限制应用程序某些部分在任何给定时间内每个IP地址允许的请求数.我目前的计划如下:
在每个请求我将: >从标题中获取IP地址 我的问题是: 解决方法
在过去,我用memcache做了这个,速度要快得多,特别是因为你只关心近似限制(近似因为memcache可以被系统刷新,可能不会被所有实例共享,等等).您甚至可以使用它来为您过期密钥.这样的事情(假设self是一个webapp2请求处理程序,并且你已经导入了GAE的memcache库):
memcache_key = 'request-count-' + self.request.remote_addr count = memcache.get(memcache_key) if count is not None and count > MAX_REQUESTS: logging.warning("Remote user has %d requests; rejecting." % (count)) self.error(503) return count = memcache.incr(memcache_key) if count is None: # key didn't exist yet memcache.add(memcache_key,1,time=WINDOW_IN_SECONDS) 这将创建一个密钥,在WINDOW_IN_SECONDS时间内关于MAX_REQUESTS后拒绝用户,将每个WINDOW_IN_SECONDS的计数重新归零. (即它不是一个滑动窗口;它在每个时间段重置为零.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |