Twisted proxy sorğusuna gövdəsi üçün son tarix verin
Proxy endpoint-inin bağlantı taym-autunu, kiçik cavab gövdəsinin oxunmasını da əhatə edən Deferred son tarixi ilə birləşdirin.
ProxyAgent sürətlə qoşula və sonra cavab gövdəsini qeyri-müəyyən müddət gözləyə bilər. Onun proxy endpoint-inin bağlantı taym-autu bu sonrakı gözləməni təsvir etmir.
Agent qurarkən endpoint-də bağlantı həddi təyin edin. Aşağıdakı açıq HTTP sorğusu üçün, açıq vasitəçilərə icazə verilirsə, HTTP proxy siyahısından autentifikasiya olunmamış namizəd ünvanı əvəz edə bilər:
endpoint = TCP4ClientEndpoint(reactor, 'proxy.example', 8080,
timeout=5)
agent = ProxyAgent(endpoint, reactor=reactor)
Yaddaşda toplamaq niyyətində olduğunuz kiçik cavab üçün son tarixi əlavə etməzdən əvvəl gövdə oxunmasını Deferred zəncirinə daxil edin:
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()))
Fraqment tətbiqin artıq öz reactoruna və konfiqurasiya olunmuş agentinə malik olduğunu fərz edir. ProxyAgent sorğusunun Deferred-i cavab obyekti qaytarır; readBody gövdə üçün Deferred qaytarır. Onu callback-dən qaytarmaq zəncirin də həmin əməliyyatı gözləməsinə səbəb olur.
Yerləşdirmə vacibdir. Twisted addTimeout-u ondan əvvəl quraşdırılmış callback-lərin təmsil etdiyi işə tətbiq edir. Sonradan gövdə oxuyucusu əlavə etmək başqa sərhəd təsvir edərdi. Bu düzülüşdə taymer addTimeout çağırıldıqda başlayır və həmin zəncirdəki gözləyən sorğunu və gövdə işini əhatə edir.
Böyük və ya qeyri-məhdud gövdələr üçün axınlı istehlakçıdan istifadə edin və onun tamamlanmasını eyni şəkildə təmsil edin. Müştəri tərəfindəki son tarix tətbiqinizin nə qədər gözlədiyini məhdudlaşdırır; proxy-nin öz yuxarı axın bağlantı taym-autunu yenidən konfiqurasiya etmir.