在Python中实现基于时间的配额

发布于 2024-11-14 10:57:04 字数 333 浏览 2 评论 0原文

我需要在我的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

要走就滚别墨迹 2024-11-21 10:57:04

我不知道有任何现成的组件,但做到这一点应该相当简单。

我可能会使用包含两列的数据库表:用户 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文