ProxyAgent త్వరగా కనెక్ట్ అయి ఆ తర్వాత ప్రతిస్పందన బాడీ కోసం అపరిమితంగా వేచి ఉండవచ్చు. దాని ప్రాక్సీ ఎండ్‌పాయింట్ కనెక్షన్ టైమౌట్ ఆ తర్వాతి నిరీక్షణను వివరించదు.

ఏజెంట్‌ను నిర్మించేటప్పుడు ఎండ్‌పాయింట్‌పై కనెక్షన్ పరిమితిని సెట్ చేయండి. క్రింది పబ్లిక్ HTTP అభ్యర్థన కోసం, పబ్లిక్ మధ్యవర్తులకు అనుమతి ఉంటే HTTP ప్రాక్సీ జాబితా నుండి ధృవీకరించని అభ్యర్థి చిరునామాను భర్తీ చేయవచ్చు:

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

మీరు మెమొరీలో సేకరించాలనుకుంటున్న చిన్న ప్రతిస్పందన కోసం, గడువు జోడించే ముందు బాడీ పఠనాన్ని Deferred గొలుసులో చేర్చండి:

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

ఈ భాగం అప్లికేషన్‌లో ఇప్పటికే reactor మరియు కాన్ఫిగర్ చేసిన ఏజెంట్ ఉన్నాయని ఊహిస్తుంది. ProxyAgent అభ్యర్థన Deferred ప్రతిస్పందన వస్తువును ఇస్తుంది; readBody బాడీ కోసం Deferred ఇస్తుంది. దాన్ని callback నుండి తిరిగి ఇచ్చినప్పుడు గొలుసు ఆ పని కోసం కూడా వేచి ఉంటుంది.

స్థానం ముఖ్యం. Twisted addTimeout ను దానికి ముందు ఇన్‌స్టాల్ చేసిన callback బదులుగా ఉన్న పనిపై వర్తిస్తుంది. తర్వాత బాడీ రీడర్‌ను జోడిస్తే వేరే హద్దు వివరించబడుతుంది. ఈ అమరికలో టైమర్ addTimeout పిలిచినప్పుడు ప్రారంభమై ఆ గొలుసులోని పెండింగ్ అభ్యర్థన మరియు బాడీ పనిని కవర్ చేస్తుంది.

పెద్ద లేదా అపరిమిత బాడీల కోసం స్ట్రీమింగ్ వినియోగదారుని ఉపయోగించి దాని పూర్తిని అదే విధంగా సూచించండి. క్లయింట్ వైపు గడువు మీ అప్లికేషన్ ఎంతసేపు వేచి ఉంటుందో పరిమితం చేస్తుంది; అది ప్రాక్సీ స్వంత అప్‌స్ట్రీమ్ కనెక్షన్ టైమౌట్‌ను మళ్లీ కాన్ఫిగర్ చేయదు.

సంబంధిత వ్యాసాలు