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

Местоположбата е важна. Twisted го применува addTimeout на работата што ја претставуваат callback-овите инсталирани пред него. Додавање читач на тело потоа би опишало друга граница. Во овој распоред тајмерот започнува кога ќе се повика addTimeout и ги покрива барањето што чека и работата со телото во тој синџир.

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

Поврзани статии