Një ProxyAgent mund të lidhet shpejt dhe më pas të presë pa kufi një trup përgjigjeje. Afati i lidhjes i pikës fundore të proxy nuk e përshkruan atë pritje të mëvonshme.

Vendosni një kufi lidhjeje në pikën fundore kur ndërtoni agjentin. Për kërkesën publike HTTP më poshtë, një kandidat i paautentikuar nga lista e proxy HTTP mund të zëvendësojë adresën nëse lejohen ndërmjetësit publikë:

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

Për një përgjigje të vogël që synoni ta grumbulloni në memorie, përfshini leximin e trupit në zinxhirin Deferred përpara se të shtoni afatin:

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

Fragmenti supozon se aplikacioni ka tashmë reactor-in dhe agjentin e konfiguruar. Deferred i kërkesës së ProxyAgent jep një objekt përgjigjeje; readBody kthen Deferred-in për trupin. Kthimi i tij nga callback bën që zinxhiri të presë edhe atë operacion.

Vendosja ka rëndësi. Twisted zbaton addTimeout në punën që përfaqësojnë callback-et e instaluara përpara tij. Shtimi i një lexuesi trupi më pas do të përshkruante një kufi tjetër. Në këtë rregullim kohëmatësi niset kur thirret addTimeout dhe mbulon kërkesën në pritje dhe punën me trupin në atë zinxhir.

Përdorni një konsumator transmetimi për trupa të mëdhenj ose të pakufizuar dhe përfaqësoni përfundimin e tij në të njëjtën mënyrë. Një afat në anën e klientit kufizon sa kohë pret aplikacioni juaj; ai nuk rikonfiguron afatin e lidhjes nga lart të vetë proxy-t.

Artikuj të ngjashëm