我有一个 Tornado 网络服务器。我想知道我是否可以控制传入请求的数量?我只想在给定的时间范围内接受来自单个客户端的 x 个请求。
问问题
87 次
1 回答
1
将过期时间设置为您想要的时间范围的 cookie,并使用此 cookie 来记录请求数。
代码示例:
假设您希望时间范围为一天,因此这是设置 cookie 的方法。在用户登录时执行此操作(或在您想要执行任何操作之后):
set_secure_cookie('requestscount', '0', expires_days=1)
然后在授予对资源的访问权限之前检查计数值:
user_requests = int(get_secure_cookie('requestscount'))
if user_requests < MAX_USER_REQUESTS:
user_requests += 1
set_secure_cookie('requestscount', str(user_requests), expires_days=1)
# serve the resource to user
...
当然还有其他方法。您可以将此计数保存在数据库中而不是 cookie 中。
于 2014-07-17T16:17:55.917 回答