python - 在 Twisted 中限制 http 客户端

标签 python twisted

上下文

(以防我问错问题)

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

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

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

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

问题

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

问题

  • 我是不是漏掉了什么 - 有没有一种简单的方法可以在客户端限制 HTTP 请求?
  • 如果没有我可以使用的另一种协议(protocol)来支持我的用例,还是编写一些我可以轻松理解并应用上述工厂的简单协议(protocol)更好?

最佳答案

限制 HTTP 请求的速率涉及的不仅仅是 ThrottlingFactoryLimitConnectionsByPeer 所做的事情。

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

ThrottlingFactory 应该可以工作,尽管您可能需要做一些额外的工作才能将其入侵其中,而且这可能没有很好的记录。如果您需要更多帮助,包括您使用的黑客代码和您遇到的错误对您很有用。但是,它所做的是限制该连接的线路速率,而不是传出连接的速率。为此,您需要一个客户端端点来延迟传出连接成功。

据我所知,您没有遗漏任何东西。这可能并不像看起来那么难,但没有任何开箱即用的东西可以为您做到这一点。你是对的,这是 Twisted 的 HTTP 客户端应该做的事情。

关于python - 在 Twisted 中限制 http 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26745536/

相关文章:

python - Tastypie GET ManyTomany 错误

python - 使安装新的Python次要版本而不是之前的版本

python - 使用 int 类型声明 numpy 数组并将数组指针传递给 C 代码

javascript - Ajax POST 不起作用/扭曲

python - 适用于 Windows 的 AppEngine Python SDK 无法运行带有 EOFError 的应用程序

python - 如何用破折号替换嵌套的短语列表?

python - 在twisted.web 中使用适配器比子类化/包装 session 有什么好处?

python - 我应该使用什么进行远程桌面控制?

django - 使用 Twisted 从 Django 应用程序异步上传文件

python - 使用 msn 协议(protocol)运行 twisted.words 示例时出现问题