在Python中实现基于时间的配额
我需要在我的 python (twisted) 应用程序中实现基于时间的配额。
是否有现有的模块或其他实现可供我参考?
具体来说,我的应用程序需要使用“每分钟 10 个连接”等规则对来自客户端的连接进行速率限制。
有一个 Google App Engine 模块名称“taskqueue”似乎符合我的需求,但我没有使用 GAE。
谢谢。
编辑:
- 平台是linux
- re:iptables;它需要位于应用程序中 b/.c 配额不会基于源 IP 地址,而是基于一些特定于应用程序的数据(例如“clientid”)。
I need to implement a time-based quota in my python (twisted) application.
Is there an existing module, or other implementation that I should use as a reference?
Specifically, my application needs to ratelimit connections from clients, using rules like '10 connections per minute'.
There is a Google App Engine module name 'taskqueue' that seems to fit my needs, but I am not using GAE.
Thank you.
EDIT:
- platform is linux
- re: iptables; it needs to be in the application b/.c the quotas will not be based on source IP address, rather some application-specific data ('clientid', for example).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不知道有任何现成的组件,但做到这一点应该相当简单。
我可能会使用包含两列的数据库表:用户 ID 和时间戳。每次用户(IP 地址?)想要连接时,您都会找到具有该用户 ID 且时间戳从现在到 60 秒前的所有条目。如果低于限制,则添加一个条目并允许连接;否则,您将拒绝连接。
I'm not aware of any ready-made component, but it should be fairly simple to do this.
I would probably use a database table, containing two columns: user ID and timestamp. Each time a user (IP address?) wants a connection, you find all the entries with that user ID with a timestamp between now and 60 seconds ago. If it's under the limit, you add an entry and allow the connection; otherwise, you reject the connection.