Twisted прокси суроосуна анын денеси үчүн мөөнөт бериңиз
Прокси акыркы чекитинин туташуу тайм-аутын кичине жооп денесин окууну да камтыган Deferred мөөнөтү менен айкалыштырыңыз.
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 жана конфигурацияланган агент мурунтан бар деп эсептейт. ProxyAgent суроосунун Deferred'и жооп объектисин берет; readBody дененин Deferred'ин кайтарат. Аны callback'тен кайтаруу тизмекти ошол операцияны да күтүүгө мажбурлайт.
Жайгашуу маанилүү. Twisted addTimeout'ту өзүнөн мурун орнотулган callback'тер билдирген ишке колдонот. Кийин дене окугучту кошуу башка чекти сүрөттөмөк. Бул жайгашууда таймер addTimeout чакырылганда башталат жана ошол тизмектеги күтүп турган суроону жана дене ишин камтыйт.
Чоң же чексиз денелер үчүн агымдуу керектөөчүнү колдонуңуз жана анын аякташын ошол эле жол менен көрсөтүңүз. Кардар тараптагы мөөнөт колдонмоңуз канча күтөрүн чектейт; ал проксинин өзүнүн жогорку агымдагы туташуу тайм-аутын кайра конфигурациялабайт.