ProxyAgent se lahko hitro poveže in nato neomejeno čaka na telo odgovora. Časovna omejitev povezave njegove končne točke proxy ne opisuje tega poznejšega čakanja.

Pri gradnji agenta nastavite mejo povezave na končni točki. Za javno zahtevo HTTP spodaj lahko neoverjen kandidat s seznama proxyjev HTTP zamenja naslov, če so javni posredniki dovoljeni:

endpoint = TCP4ClientEndpoint(reactor, 'proxy.example', 8080,
                              timeout=5)
agent = ProxyAgent(endpoint, reactor=reactor)

Za majhen odgovor, ki ga nameravate zbrati v pomnilniku, vključite branje telesa v verigo Deferred, preden dodate rok:

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()))

Odlomek predvideva, da ima aplikacija že svoj reactor in nastavljenega agenta. Deferred zahteve ProxyAgent vrne objekt odgovora; readBody vrne Deferred za telo. Če ga vrnete iz callbacka, veriga čaka tudi na to operacijo.

Namestitev je pomembna. Twisted uporabi addTimeout za delo, ki ga predstavljajo callbacki, nameščeni pred njim. Dodajanje bralnika telesa pozneje bi opisalo drugo mejo. V tej razporeditvi se časovnik začne ob klicu addTimeout in pokrije čakajočo zahtevo ter delo s telesom v tej verigi.

Za velika ali neomejena telesa uporabite pretočnega potrošnika in njegovo dokončanje predstavite na enak način. Rok na strani odjemalca omejuje, kako dolgo čaka vaša aplikacija; ne prekonfigurira lastne časovne omejitve povezave proxyja navzgor.

Sorodni članki