【发布时间】:2013-07-20 19:49:34
【问题描述】:
我正在为我的 Web 应用程序设计一个 API,我想限制用户(具有唯一令牌)可以发出的请求数。我该如何设计它,使得每次请求后发出的请求数增加 1,同时又避免不一致,例如当用户在我更新请求计数器之前发出另一个请求时?
【问题讨论】:
-
您使用什么数据存储来跟踪计数器?
-
我目前正在使用 sqlite (python) 进行测试
我正在为我的 Web 应用程序设计一个 API,我想限制用户(具有唯一令牌)可以发出的请求数。我该如何设计它,使得每次请求后发出的请求数增加 1,同时又避免不一致,例如当用户在我更新请求计数器之前发出另一个请求时?
【问题讨论】:
这将取决于您最终决定使用的数据存储以及如何实现递增计数器值。 SQLite is transactional,因此它将遵循 ACID 属性。您需要确保应用程序逻辑正确隔离事务,即您无法从数据库中检索计数器的当前值、采取一些操作,然后对其进行递增并更新数据存储。我想允许数据存储直接处理值的增量可能是最好的,例如SQLite - increase value by a certain number
以下内容非常针对您的问题,可能会有所帮助: How To Rate-Limit An API
【讨论】: