Twisted proksi so'roviga uning tanasi uchun muddat bering
Proksi so'nggi nuqtasining ulanish taym-autini kichik javob tanasini o'qishni ham qamrab oluvchi Deferred muddati bilan birlashtiring.
ProxyAgent tez ulanadi va keyin javob tanasini cheksiz kutishi mumkin. Uning proksi so'nggi nuqtasining ulanish taym-auti bu keyingi kutishni tavsiflamaydi.
Agentni qurishda so'nggi nuqtada ulanish chegarasini belgilang. Quyidagi ommaviy HTTP so'rovi uchun ommaviy vositachilarga ruxsat berilsa, HTTP proksilar ro'yxatidan tasdiqlanmagan nomzod manzilni almashtirishi mumkin:
endpoint = TCP4ClientEndpoint(reactor, 'proxy.example', 8080,
timeout=5)
agent = ProxyAgent(endpoint, reactor=reactor)
Xotirada to'plashni rejalashtirgan kichik javob uchun muddat qo'shishdan oldin tana o'qishni Deferred zanjiriga kiriting:
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()))
Bu parcha ilovada allaqachon reactor va sozlangan agent bor deb hisoblaydi. ProxyAgent so'rovining Deferred'i javob obyektini beradi; readBody tana uchun Deferred'ni qaytaradi. Uni callback'dan qaytarish zanjirni o'sha operatsiyani ham kutishga majbur qiladi.
Joylashuv muhim. Twisted addTimeout'ni undan oldin o'rnatilgan callback'lar ifodalaydigan ishga qo'llaydi. Keyin tana o'quvchisini qo'shish boshqa chegarani tavsiflaydi. Bu tartibda taymer addTimeout chaqirilganda boshlanadi va o'sha zanjirdagi kutayotgan so'rov hamda tana ishini qamrab oladi.
Katta yoki cheksiz tanalar uchun oqim iste'molchisidan foydalaning va uning tugashini xuddi shunday ifodalang. Mijoz tomonidagi muddat ilovangiz qancha kutishini cheklaydi; u proksining o'zining yuqori oqim ulanish taym-autini qayta sozlamaydi.