Python 重载twisted.client.getPage以设置客户端套接字';地址!

Python 重载twisted.client.getPage以设置客户端套接字';地址!,python,twisted.web,Python,Twisted.web,在过去的10个小时里,我一直在努力做到这一点: 使用标准库翻译我的阻止httpclient。。。 转换为扭曲的非阻塞/异步版本 10小时后。。。通过他们的API评分——似乎从来没有人需要这样做才能做到这一点。很好的框架,但是仅仅将套接字设置到不同的接口似乎有点难以承受 任何一位python大师都能说明这一点和/或让我走上正确的方向吗?或者任何我可能错过的文件?谢谢 嗯,看来你什么都没错过。client.getPage不直接支持设置绑定地址。我只是在这里猜测,但我怀疑这是一种原始开发人员从未想到有

在过去的10个小时里,我一直在努力做到这一点:

使用标准库翻译我的阻止httpclient。。。 转换为扭曲的非阻塞/异步版本

10小时后。。。通过他们的API评分——似乎从来没有人需要这样做才能做到这一点。很好的框架,但是仅仅将套接字设置到不同的接口似乎有点难以承受


任何一位python大师都能说明这一点和/或让我走上正确的方向吗?或者任何我可能错过的文件?谢谢

嗯,看来你什么都没错过。client.getPage不直接支持设置绑定地址。我只是在这里猜测,但我怀疑这是一种原始开发人员从未想到有人想要指定绑定地址的情况

即使这样做没有内置的支持,也应该很容易做到。在twisted中为传出连接指定绑定地址的方法是将绑定地址传递给
reactor.connectXXX()
函数。幸运的是,
getPage()
的代码非常简单。我建议三件事:

  • getPage()
    的代码及其关联的助手函数复制到项目中
  • 修改它们以通过绑定地址
  • 创建修补程序以修复此漏洞并将其发送给Twisted People:)

  • 在_makeGetterFactory()的内部有reactor.connectTCP(),我向其中添加了bindAddress,它似乎正在工作。getPage()是一个简单的帮助函数,是的,但真正让我困惑的是,我以为我可以发送一些重载的contextFactory或其他东西:/Rakis,谢谢你的快速回复。我想这一切都值得学习并养成习惯——尽管感觉我并不完全需要所有的功能,但因为我正在创建一个相当大的高性能网络应用程序。。。我只是希望它能像Twisted所说的那样灵活和可扩展。Rakis,你个人推荐的关于advanced Twisted(除了乏味的API)的任何书籍或体面的文档吗?有一本关于Twisted的O'Reilly书籍非常好,但是,它更适合中级/概述级别,而不是高级。现有文档相当简洁,但对于大多数常见案例操作来说相当全面。但我发现,当我做一些不寻常的事情时,只需挖掘扭曲的源代码,而不是寻找明确的文档,我通常会得到更好的服务。这本书是由许多非常有才华的人写的,除了获得我一直在寻找的东西之外,我从来没有忘记学习一两个新的技巧来添加到我的工具箱中;-)