Rhowch derfyn amser i gais proxy Twisted ar gyfer ei gorff
Cyfunwch derfyn amser cysylltu'r pwynt terfyn proxy ag amserlen Deferred sy'n cynnwys darllen corff ymateb bach hefyd.
Gall ProxyAgent gysylltu'n gyflym ac wedyn aros yn amhenodol am gorff ymateb. Nid yw terfyn amser cysylltu ei bwynt terfyn proxy yn disgrifio'r aros hwnnw wedyn.
Gosodwch derfyn cysylltu ar y pwynt terfyn wrth adeiladu'r asiant. Ar gyfer y cais HTTP cyhoeddus isod, gall ymgeisydd heb ei ddilysu o'r rhestr proxy HTTP ddisodli'r cyfeiriad os caniateir cyfryngwyr cyhoeddus:
endpoint = TCP4ClientEndpoint(reactor, 'proxy.example', 8080,
timeout=5)
agent = ProxyAgent(endpoint, reactor=reactor)
Ar gyfer ymateb bach yr ydych am ei gasglu yn y cof, cynhwyswch ddarllen corff yng nghadwyn Deferred cyn ychwanegu'r amserlen:
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()))
Mae'r darn yn tybio bod gan y cymhwysiad ei reactor a'i asiant wedi'u ffurfweddu'n barod. Mae Deferred cais ProxyAgent yn rhoi gwrthrych ymateb; mae readBody yn rhoi Deferred y corff. Mae ei ddychwelyd o'r callback yn gwneud i'r gadwyn aros am y gweithrediad hwnnw hefyd.
Mae'r lleoliad yn bwysig. Mae Twisted yn cymhwyso addTimeout i'r gwaith y mae'r callbacks a osodwyd o'i flaen yn ei gynrychioli. Byddai ychwanegu darllenydd corff wedyn yn disgrifio ffin wahanol. Yn y drefn hon mae'r amserydd yn dechrau pan elwir addTimeout ac yn cwmpasu'r cais sy'n disgwyl a'r gwaith corff yn y gadwyn honno.
Defnyddiwch ddefnyddiwr ffrwd ar gyfer cyrff mawr neu ddiderfyn a chynrychiolwch ei gwblhau yn yr un modd. Mae amserlen ar ochr y cleient yn cyfyngu pa mor hir y mae eich cymhwysiad yn aros; nid yw'n ailffurfweddu terfyn amser cysylltu ei hun y proxy i fyny'r llif.