Twisted ப்ராக்ஸி கோரிக்கைக்கு அதன் உடலுக்கு ஒரு காலக்கெடு கொடுங்கள்
ப்ராக்ஸி முனைப்புள்ளியின் இணைப்பு நேர வரம்பை, சிறிய பதில் உடலைப் படிப்பதையும் உள்ளடக்கும் Deferred காலக்கெடுவுடன் இணைக்கவும்.
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 அழைக்கப்படும்போது தொடங்கி, அந்தச் சங்கிலியில் உள்ள நிலுவைக் கோரிக்கையையும் உடல் வேலையையும் உள்ளடக்கும்.
பெரிய அல்லது வரம்பற்ற உடல்களுக்கு ஸ்ட்ரீமிங் நுகர்வியைப் பயன்படுத்தி அதன் நிறைவை அதே வழியில் குறிக்கவும். கிளையண்ட் பக்கக் காலக்கெடு உங்கள் பயன்பாடு எவ்வளவு காத்திருக்கும் என்பதைக் கட்டுப்படுத்துகிறது; அது ப்ராக்ஸியின் சொந்த அப்ஸ்ட்ரீம் இணைப்பு நேர வரம்பை மறுகட்டமைக்காது.