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

ቁራጩ መተግበሪያው አስቀድሞ ሪአክተሩንና የተዋቀረ ኤጀንት እንዳለው ይገምታል። የ ProxyAgent ጥያቄ Deferred የምላሽ ነገር ይሰጣል፤ readBody የአካሉን Deferred ይመልሳል። ከመልሶ ጥሪው ውስጥ መመለሱ ሰንሰለቱ በዚያ ስራ ላይም እንዲጠብቅ ያደርጋል።

ቦታው ወሳኝ ነው። Twisted addTimeout ን ከእሱ በፊት በተጫኑ መልሶ ጥሪዎች በሚወከለው ስራ ላይ ይተገበራል። ከዚያ በኋላ የአካል አንባቢ መጨመር ሌላ ድንበር ይገልጻል። በዚህ አቀማመጥ ሰዓቱ addTimeout ሲጠራ ይጀምራል እና በዚያ ሰንሰለት ውስጥ በመጠባበቅ ላይ ያለውን ጥያቄና የአካል ስራ ይሸፍናል።

ለትልቅ ወይም ገደብ ለሌለው አካል የፍሰት ተጠቃሚ ይጠቀሙ እና ማጠናቀቁን በተመሳሳይ መንገድ ይወክሉ። የደንበኛ ጎን የጊዜ ገደብ መተግበሪያዎ ምን ያህል እንዲጠብቅ ይገድባል፤ የፕሮክሲውን የራሱን የላይኛው ግንኙነት ጊዜ ገደብ አይቀይርም።

ተዛማጅ ጽሑፎች