twisted.web.http.HTTPClient在收到所有响应内容时是否实现回调?

时间:2011-06-14 23:51:56

标签: python twisted httpclient twisted.web

文档说明在完全收到响应后调用'handleResponseEnd'。

http://twistedmatrix.com/documents/11.0.0/api/twisted.web.http.HTTPClient.html#handleResponseEnd

然而,调试似乎表明并非总是如此。当对同一URI发出多个请求时,似乎只会调用FIRST请求。当对不同的URI发出多个请求时,它似乎仍然只是为FIRST请求调用。

这种行为是否合适?多次向同一URI发出请求几乎是有意义的,因为收到的响应通常是“304 Not Modified”,因此客户端不会多次接收内容。但是,我仍然希望回调能够表明“我们收到了回复”。

是否有更不适合从中获取完整响应的回调?

2 个答案:

答案 0 :(得分:0)

通常,您可以通过在工厂中调用HTTPClient为每个请求实例化一个新的buildProtocol()。这是HTTPPageGetterAgent所做的。

这是一个例外,当使用HTTP持久连接时。

你在做什么,你需要为多个请求使用相同的协议实例?

答案 1 :(得分:0)

我昨晚真的弄清楚了。我有一个继承自HTTPClient的子类。当覆盖connectionMade时,我忘了调用父级的connectionMade。由于connectionMade充当协议的默认构造函数,因此未正确配置实例。

虽然我不知道这个解决方案的每个细节,但它已经证明在测试中是可靠的。发生的异常现象已经消失。