ProxyAgent може брзо да се повеже, а затим неограничено да чека тело одговора. Временско ограничење везе његовог proxy endpoint-а не описује то касније чекање.

Поставите границу везе на endpoint-у када градите агента. За јавни HTTP захтев испод, неаутентификовани кандидат са листе HTTP proxy-ја може заменити адресу ако су јавни посредници дозвољени:

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 и конфигурисаног агента. Deferred захтева ProxyAgent-а враћа објекат одговора; readBody враћа Deferred за тело. Враћањем из callback-а ланац чека и ту операцију.

Положај је важан. Twisted примењује addTimeout на рад који представљају callback-ови инсталирани пре њега. Додавање читача тела после описало би другу границу. У овом распореду тајмер почиње када се позове addTimeout и покрива захтев на чекању и рад са телом у том ланцу.

Користите streaming потрошач за велика или неограничена тела и представите његово завршетак на исти начин. Рок на страни клијента ограничава колико дуго ваша апликација чека; он не реконфигурише сопствено временско ограничење везе proxy-ја према узводно.

Повезани чланци