Gei einum Twisted-proxy-fyrirspurn tímark til likams síns
Sameina tengitímann á proxy-endanum við Deferred-tímark sem nær einnig yfir lestur á litlum svarhluta.
ProxyAgent getur tengst fljótt og beðið síðan ótakmarkað eftir svarhluta. Tengitími proxy-endans lýsir ekki þeirri seinni bið.
Stilltu tengimörk á endann þegar þú byggir agentinn. Fyrir opinberu HTTP-fyrirspurnina 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 svarlutans í Deferred-keðjunni áður en þú bætir við tímarkinu:
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. Fyrirspurnar-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 fyrirspurnina 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. Tímark á biðlarahlið takmarkar hversu lengi forritið þitt bíður; það stillir ekki uppstreymistengitíma proxysins sjálfs að nýju.