上下文
(以防我问错问题)
我有客户端和服务器。他们使用的应用程序是用 Twisted 编写的。服务器需要一个客户端可以使用的简单 API。必须
- 允许函数调用的近似值,其中最多一个参数或响应是二进制数据流
- 支持认证
但是,客户端还必须能够限制其读/写速率和与服务器的连接数。
我找到了 Twisted HTTP 库,因为尽管 HTTP 比我需要的更复杂,但我认为它可以完成工作,因为我认为它可以组合 WrappingFactories,例如 twisted.protocols.policies.ThrottlingFactory和 twisted.protocols.policies.LimitConnectionsByPeer
问题
似乎没有简单的方法来包装 _HTTP11ClientFactory由 Agent 使用.有充分的理由,因为当我尝试添加一种包装工厂的 hacky 方法时,它导致了错误。
问题
- 我是不是漏掉了什么 - 有没有一种简单的方法可以在客户端限制 HTTP 请求?
- 如果没有我可以使用的另一种协议(protocol)来支持我的用例,还是编写一些我可以轻松理解并应用上述工厂的简单协议(protocol)更好?
最佳答案
限制 HTTP 请求的速率涉及的不仅仅是 ThrottlingFactory
或 LimitConnectionsByPeer
所做的事情。
LimitConnectionsByPeer
用于限制到服务器的传入 连接速率,因此对客户端不是很有帮助。
ThrottlingFactory
应该可以工作,尽管您可能需要做一些额外的工作才能将其入侵其中,而且这可能没有很好的记录。如果您需要更多帮助,包括您使用的黑客代码和您遇到的错误对您很有用。但是,它所做的是限制该连接的线路速率,而不是传出连接的速率。为此,您需要一个客户端端点来延迟传出连接成功。
据我所知,您没有遗漏任何东西。这可能并不像看起来那么难,但没有任何开箱即用的东西可以为您做到这一点。你是对的,这是 Twisted 的 HTTP 客户端应该做的事情。
关于python - 在 Twisted 中限制 http 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26745536/