ProxyAgent getur tengst fljótt og beðið svo ótakmarkað eftir svarhluta. Tengitími proxy-endans lýsir ekki þeirri seinni bið.

Stilltu tengimörk á endann þegar þú byggir agentinn. Fyrir opinberu HTTP-beiðnina hér að neðan getur óstaðfestur kandídat af HTTP-proxylistanum komið í stað heimilisfangsins ef opinberir milliliðir eru leyfðir:

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

Fyrir litla svörun sem þú ætlar að safna í minni skaltu hafa lestur líkamans í Deferred-keðjunni áður en þú bætir frestinum við:

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

Brotinn gerir ráð fyrir að forritið hafi þegar reactor sinn og stilltan agent. Beiðnar-Deferred ProxyAgent skilar svarhlut; readBody skilar Deferred fyrir líkamann. Að skila því úr callbackinu lætur keðjuna bíða eftir þeirri aðgerð líka.

Staðsetningin skiptir máli. Twisted beitir addTimeout á verkið sem callbackin sem sett voru fyrir það standa fyrir. Að bæta við lestri líkamans eftir á myndi lýsa annarri mörkum. Í þessu fyrirkomulagi byrjar tímamælirinn þegar addTimeout er kallað og nær yfir biðjandi beiðnina og líkamsvinnuna í þeirri keðju.

Notaðu straumnotanda fyrir stóra eða ótakmarkaða líkama og sýndu lokun hans á sama hátt. Frestur á biðlarahlið takmarkar hversu lengi forritið þitt bíður; hann stillir ekki uppstreymistengitíma proxysins sjálfs að nýju.

Tengdir greinar