ProxyAgent-ը կարող է արագ միանալ, ապա անորոշ ժամանակ սպասել պատասխանի մարմնին։ Նրա proxy վերջնակետի միացման ժամկետը չի նկարագրում այդ հետագա սպասումը։

Agent-ը կառուցելիս սահմանեք միացման սահման վերջնակետում։ Ստորև բերված հանրային HTTP հարցման համար HTTP proxy ցանկից չհաստատված թեկնածուն կարող է փոխարինել հասցեն, եթե հանրային միջնորդները թույլատրված են։

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-ը և կարգավորված agent-ը։ ProxyAgent-ի հարցման Deferred-ը տալիս է պատասխանի օբյեկտ, readBody-ն վերադարձնում է մարմնի Deferred-ը։ Այն callback-ից վերադարձնելը ստիպում է շղթային սպասել նաև այդ գործողությանը։

Տեղադրությունը կարևոր է։ Twisted-ը addTimeout-ը կիրառում է այն աշխատանքի վրա, որը ներկայացնում են դրանից առաջ տեղադրված callback-ները։ Դրանից հետո մարմնի ընթերցիչ ավելացնելը կնկարագրեր այլ սահման։ Այս դասավորության մեջ ժամաչափը սկսվում է addTimeout-ի կանչով և ընդգրկում է այդ շղթայի սպասող հարցումն ու մարմնի աշխատանքը։

Մեծ կամ անսահմանափակ մարմինների համար օգտագործեք հոսքային սպառող և ներկայացրեք դրա ավարտը նույն կերպ։ Հաճախորդի կողմի ժամկետը սահմանափակում է, թե որքան է սպասում ձեր հավելվածը, այն չի վերակարգավորում proxy-ի սեփական վերին հոսքի միացման ժամկետը։

Առնչվող հոդվածներ