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 ਕਾਲ ਹੋਣ 'ਤੇ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ ਅਤੇ ਉਸ ਚੇਨ ਵਿੱਚ ਬਕਾਇਆ ਬੇਨਤੀ ਅਤੇ ਬਾਡੀ ਕੰਮ ਨੂੰ ਕਵਰ ਕਰਦਾ ਹੈ।
ਵੱਡੀਆਂ ਜਾਂ ਬੇਅੰਤ ਬਾਡੀਆਂ ਲਈ ਸਟ੍ਰੀਮਿੰਗ ਖਪਤਕਾਰ ਵਰਤੋ ਅਤੇ ਇਸ ਦੇ ਪੂਰਾ ਹੋਣ ਨੂੰ ਉਸੇ ਤਰ੍ਹਾਂ ਦਰਸਾਓ। ਕਲਾਇੰਟ ਪਾਸੇ ਦੀ ਸਮਾਂ-ਸੀਮਾ ਸੀਮਿਤ ਕਰਦੀ ਹੈ ਕਿ ਤੁਹਾਡੀ ਐਪਲੀਕੇਸ਼ਨ ਕਿੰਨਾ ਚਿਰ ਉਡੀਕਦੀ ਹੈ; ਇਹ ਪ੍ਰੌਕਸੀ ਦੀ ਆਪਣੀ ਅਪਸਟ੍ਰੀਮ ਕਨੈਕਸ਼ਨ ਟਾਈਮਆਊਟ ਨੂੰ ਮੁੜ ਸੰਰਚਿਤ ਨਹੀਂ ਕਰਦੀ।