在Twisted中限制http客户端

时间:2014-11-04 21:39:59

标签: python twisted

上下文

(如果我提出错误的问题)

我有客户端和服务器。他们使用的应用程序是用Twisted编写的。服务器需要客户端可以使用的简单API。它必须

  • 允许近似函数调用,其中最多一个参数或响应是二进制数据流
  • 支持身份验证

但是,客户端还必须能够限制其读/写速率和与服务器的连接数。

我找到了Twisted HTTP库,因为虽然HTTP比我需要的更复杂,但我认为它可以完成工作,因为我认为它可以组合WrappingFactories,例如twisted.protocols.policies.ThrottlingFactorytwisted.protocols.policies.LimitConnectionsByPeer

问题

似乎没有简单的方法来包装_HTTP11ClientFactory使用的Agent。有充分的理由,因为当我尝试添加一种包装工厂的hacky方法时,会导致错误。

问题(S)

  • 我只是遗漏了一些东西 - 是否有一种简单的方法来限制客户端的http请求?
  • 如果没有,我可以使用另一个支持我的用例的协议,或者写一些我能够轻易理解并应用上述工厂的简单方法更好吗?

1 个答案:

答案 0 :(得分:1)

限制HTTP请求的速度涉及的内容超过ThrottlingFactoryLimitConnectionsByPeer

LimitConnectionsByPeer用于限制传入连接到服务器的速率,因此对客户端没有多大帮助。

ThrottlingFactory应该可以工作,虽然你可能需要做一些额外的工作来破解它,这可能没有很好的记录。如果您希望获得更多帮助,那么您可以使用您使用的hacky代码以及您获得的错误。但是,它所做的是限制该连接的线路速率,而不是传出连接的速率。为此,您需要一个会延迟传出连接成功的客户端端点。

据我所知,你不会错过任何东西。这可能并不像看起来那么难,但没有任何开箱即用的功能。你是对的,这是Twisted的HTTP客户端应该做的事情。