Beri Permintaan Proxy Twisted Tarikh Akhir untuk Badannya
Gabungkan tamat masa sambungan titik akhir proksi dengan tarikh akhir Deferred yang turut merangkumi pembacaan badan respons kecil.
ProxyAgent boleh bersambung dengan pantas dan kemudian menunggu badan respons tanpa had. Tamat masa sambungan titik akhir proksinya tidak menerangkan penantian kemudian itu.
Tetapkan had sambungan pada titik akhir apabila membina ejen. Untuk permintaan HTTP awam di bawah, calon tanpa pengesahan daripada senarai proksi HTTP boleh menggantikan alamat jika pengantara awam dibenarkan:
endpoint = TCP4ClientEndpoint(reactor, 'proxy.example', 8080,
timeout=5)
agent = ProxyAgent(endpoint, reactor=reactor)
Untuk respons kecil yang ingin anda kumpulkan dalam memori, sertakan pembacaan badan dalam rantaian Deferred sebelum menambah tarikh akhirnya:
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()))
Coretan ini menganggap aplikasi sudah mempunyai reactor dan ejen yang dikonfigurasikan. Deferred permintaan ProxyAgent menghasilkan objek respons; readBody mengembalikan Deferred untuk badan. Mengembalikannya daripada callback membuat rantaian turut menunggu operasi itu.
Kedudukan penting. Twisted menggunakan addTimeout pada kerja yang diwakili callback yang dipasang sebelum itu. Menambah pembaca badan selepas itu akan menerangkan sempadan yang berbeza. Dalam susunan ini pemasa bermula apabila addTimeout dipanggil dan meliputi permintaan yang belum selesai serta kerja badan dalam rantaian itu.
Gunakan pengguna penstriman untuk badan besar atau tidak terbatas dan wakilkan penyelesaiannya dengan cara yang sama. Tarikh akhir di pihak klien mengehadkan berapa lama aplikasi anda menunggu; ia tidak mengkonfigurasi semula tamat masa sambungan huluan proksi itu sendiri.