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 कल गर्दा सुरु हुन्छ र त्यो शृंखलाको पर्खाइमा रहेको अनुरोध र बडी काम समेट्छ।
ठूला वा असीमित बडीका लागि स्ट्रिमिङ उपभोक्ता प्रयोग गर्नुहोस् र यसको पूर्णता उही तरिकाले देखाउनुहोस्। क्लाइन्ट-साइड समयसीमाले तपाईंको एप्लिकेसनले कति बेर पर्खन्छ भन्ने सीमित गर्छ; यसले प्रोक्सीको आफ्नै अपस्ट्रिम जडान टाइमआउट पुनः कन्फिगर गर्दैन।