Doneu a una petició proxy de Twisted un termini per al seu cos
Combineu el temps d'espera de connexió del punt final del proxy amb un termini Deferred que també cobreixi la lectura d'un cos de resposta petit.
Un ProxyAgent pot connectar-se de seguida i després esperar indefinidament un cos de resposta. El temps d'espera de connexió del punt final del proxy no descriu aquesta espera posterior.
Establiu un límit de connexió al punt final en construir l'agent. Per a la petició HTTP pública d'aquí sota, un candidat no autenticat de la llista de proxies HTTP pot substituir l'adreça si es permeten intermediaris públics:
endpoint = TCP4ClientEndpoint(reactor, 'proxy.example', 8080,
timeout=5)
agent = ProxyAgent(endpoint, reactor=reactor)
Per a una resposta petita que vulgueu recollir en memòria, incloeu la lectura del cos a la cadena Deferred abans d'afegir-hi el termini:
from twisted.web.client import readBody
d = agent.request(b'GET', b'http://example.com/')
d.addCallback(readBody)
d.addTimeout(10, reactor)
d.addCallback(lambda body: print(len(body)))
d.addErrback(lambda failure: print(failure.getErrorMessage()))
El fragment assumeix que l'aplicació ja té el seu reactor i l'agent configurat. El Deferred de la petició de ProxyAgent retorna un objecte de resposta; readBody retorna el Deferred del cos. Retornar-lo des del callback fa que la cadena també esperi aquesta operació.
La col·locació importa. Twisted aplica addTimeout a la feina que representen els callbacks instal·lats abans. Afegir un lector de cos després descriuria una frontera diferent. Amb aquesta disposició el temporitzador comença quan es crida addTimeout i cobreix la petició pendent i la feina del cos en aquesta cadena.
Feu servir un consumidor en flux per a cossos grans o il·limitats i representeu-ne la finalització de la mateixa manera. Un termini al costat del client limita quant espera la vostra aplicació; no reconfigura el temps d'espera de connexió del propi proxy cap a l'origen.