მიეცით 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-ის გამოძახებისას და ფარავს მოლოდინში მყოფ მოთხოვნასა და სხეულის სამუშაოს ამ ჯაჭვში.
დიდი ან შეუზღუდავი სხეულებისთვის გამოიყენეთ ნაკადური მომხმარებელი და მისი დასრულება იმავე გზით წარმოადგინეთ. კლიენტის მხარეს ვადა ზღუდავს, რამდენ ხანს ელოდება თქვენი აპლიკაცია; ის არ გადააკონფიგურებს თავად პროქსის აღმავალი კავშირის დროის ლიმიტს.