限制 Python Twisted 中的连接速率?

发布于 2024-09-11 11:26:16 字数 69 浏览 3 评论 0原文

有什么方法可以限制Python Twisted中的连接速率吗?我需要模拟慢速数据线,超时和可选的数据丢失,并使用扭曲的框架。

Is there any way to limit connection rate in Python Twisted? I need to simulate the slow dataline, with timeouts and optionally data loss and use twisted framework.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(2

骄傲 2024-09-18 11:26:16

这篇文章提出了三种解决方案并讨论了两种可行的方案一个 - 最好的方法是使用 iptables(当然,或者其他同样强大且灵活的防火墙软件),如果您的操作系统支持此类软件(即,在twisted之外进行数据速率限制);如果您的操作系统没有这样的能力可供您使用,则提到了一个不太优选但可行的解决方案

1) 在服务器中创建字典 {ip1:count1, ip2: count2, .},并
检查每个传入连接的计数。
如果 ip:count 的阈值是,则使用 Transport.loseConnection() 断开连接
超过了。
每分钟使用reactor.callLater将此字典重置为空dict {}
计时器。

其限制在帖子中解释为

方法(1)将执行accept()
连接然后断开它,
给另一端的主机一个
syn/ack 事务后跟
关闭连接,然后它会
可能尝试重新连接
立即。

this post proposes three solutions and discusses the two feasible ones -- the best one is to use iptables (or other, equally powerful and flexible firewall software, of course) if your OS supports such software (i.e., do the data rate limiting outside of twisted); if your OS has no such power at your disposal, a less preferable but workable solution mentioned there is

1) Create an dictionary {ip1:count1, ip2: count2, .} in the server, and
check the counts for each incoming connection.
Disconnect with transport.loseConnection() if the threshold for ip:count is
exceeded.
Reset this dictionary to empty dict {} every minute with reactor.callLater
timer.

whose limitation is explained in the post as

approach (1) will do an accept() of
the connection and then drop it,
giving the host on the other end a
syn/ack transaction followed by a
closed connection, and then it will
probably attempt to reconnect
immediately.

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