Ang isang ProxyAgent ay maaaring kumonekta nang mabilis at pagkatapos ay maghintay nang walang katapusan para sa katawan ng tugon. Hindi inilalarawan ng timeout ng koneksyon ng proxy endpoint nito ang huling paghihintay na iyon.

Magtakda ng hangganan ng koneksyon sa endpoint kapag binubuo ang agent. Para sa pampublikong kahilingang HTTP sa ibaba, isang hindi napapatunayang kandidato mula sa listahan ng HTTP proxy ang maaaring pumalit sa address kung pinapayagan ang mga pampublikong tagapamagitan:

endpoint = TCP4ClientEndpoint(reactor, 'proxy.example', 8080,
                              timeout=5)
agent = ProxyAgent(endpoint, reactor=reactor)

Para sa maliit na tugon na balak mong tipunin sa memorya, isama ang pagbasa ng katawan sa Deferred chain bago idagdag ang deadline:

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()))

Ipinapalagay ng bahagi na mayroon nang reactor at naka-configure na agent ang aplikasyon. Ang request Deferred ng ProxyAgent ay nagbibigay ng object ng tugon; ibinabalik ng readBody ang Deferred para sa katawan. Ang pagbabalik nito mula sa callback ay nagpapahintay din sa chain para sa operasyong iyon.

Mahalaga ang pagkakalagay. Inilalapat ng Twisted ang addTimeout sa gawaing kinakatawan ng mga callback na na-install bago ito. Ang pagdaragdag ng tagabasa ng katawan pagkatapos ay maglalarawan ng ibang hangganan. Sa ayos na ito ang timer ay nagsisimula kapag tinawag ang addTimeout at sinasaklaw ang nakabinbing kahilingan at gawain sa katawan sa chain na iyon.

Gumamit ng streaming consumer para sa malalaki o walang hanggang katawan at ipakita ang pagkumpleto nito sa parehong paraan. Ang deadline sa panig ng client ay naglilimita kung gaano katagal naghihintay ang iyong aplikasyon; hindi nito muling kinukumpigura ang sariling upstream na timeout ng koneksyon ng proxy.

Kaugnay na mga artikulo