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 परत करते. कॉलबॅकमधून ते परत केल्यास साखळी त्या क्रियेचीही वाट पाहते.
स्थान महत्त्वाचे आहे. Twisted addTimeout त्यापूर्वी स्थापित कॉलबॅक दर्शवत असलेल्या कामावर लागू करते. नंतर बॉडी रीडर जोडल्यास वेगळी सीमा दर्शवली जाईल. या मांडणीत टाइमर addTimeout कॉल झाल्यावर सुरू होतो आणि त्या साखळीतील प्रलंबित विनंती व बॉडी काम व्यापते.
मोठ्या किंवा अमर्यादित बॉडीसाठी स्ट्रीमिंग ग्राहक वापरा आणि त्याची पूर्तता त्याच पद्धतीने दर्शवा. क्लायंट-साइड मुदत तुमचे ॲप्लिकेशन किती काळ थांबते हे मर्यादित करते; ती प्रॉक्सीची स्वतःची अपस्ट्रीम कनेक्शन टाइमआउट पुन्हा संरचित करत नाही.