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 ಕರೆದಾಗ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ ಮತ್ತು ಆ ಸರಪಳಿಯಲ್ಲಿನ ಬಾಕಿ ವಿನಂತಿ ಹಾಗೂ ಬಾಡಿ ಕೆಲಸವನ್ನು ಒಳಗೊಳ್ಳುತ್ತದೆ.

ದೊಡ್ಡ ಅಥವಾ ಮಿತಿಯಿಲ್ಲದ ಬಾಡಿಗಳಿಗೆ ಸ್ಟ್ರೀಮಿಂಗ್ ಗ್ರಾಹಕವನ್ನು ಬಳಸಿ ಮತ್ತು ಅದರ ಪೂರ್ಣಗೊಳ್ಳುವಿಕೆಯನ್ನು ಅದೇ ರೀತಿಯಲ್ಲಿ ಪ್ರತಿನಿಧಿಸಿ. ಕ್ಲೈಂಟ್-ಬದಿಯ ಗಡುವು ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಎಷ್ಟು ಕಾಲ ಕಾಯುತ್ತದೆ ಎಂಬುದನ್ನು ಮಿತಿಗೊಳಿಸುತ್ತದೆ; ಅದು ಪ್ರಾಕ್ಸಿಯ ಸ್ವಂತ ಅಪ್‌ಸ್ಟ್ರೀಮ್ ಸಂಪರ್ಕ ಟೈಮೌಟ್ ಅನ್ನು ಮರುಸಂರಚಿಸುವುದಿಲ್ಲ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು