К сожалению, Agent не делает это так просто, как если бы вы работали напрямую с экземпляром Protocol, но это также невозможно.
Ключ лежит здесь, в определении класса Agent:
_protocol = HTTP11ClientProtocol
Чтобы получить доступ к транспорту, вы можете переопределить connectionMade в HTTP11ClientProtocol, а также в агенте.
Таким образом, вы получите что-то вроде:
from twisted.web import client
class MyHTTPClient(client.HTTP11ClientProtocol):
def connectionMade(self):
self.transport.setTcpNoDelay(True)
client.HTTP11ClientProtocol.connectionMade(self) # call the super-class's connectionMade
class MyAgent(client.Agent):
_protocol = MyHTTPClient
Теперь используйте MyAgent вместо агента, и вы получите TCP-узел на клиенте.
** Примечание **, это не единственный способ сделать это, но один из способовможете сделать это и продолжать использовать Agent.request.Кроме того, напишите свой собственный агент, который обрабатывает запрос и соединяет его с клиентом и связывает ваш запрос вместе с нодлаем TCP в отложенной цепочке.
** Примечание 2 ** В этом случае все нормальноПредполагается, что у «transport» есть метод setTcpNoDelay () , поскольку вполне разумно предположить, что вы будете использовать TCP в качестве транспорта для HTTP-запроса.Это может быть не очень разумной идеей.