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 ခေါ်သည့်အခါ စတင်ပြီး ထိုကွင်းဆက်ရှိ ဆိုင်းငံ့နေသော တောင်းဆိုချက်နှင့် ကိုယ်ထည် အလုပ်ကို လွှမ်းခြုံသည်။
ကြီးမားသော သို့မဟုတ် အကန့်အသတ်မရှိသော ကိုယ်ထည်များအတွက် streaming သုံးစွဲသူကို အသုံးပြုပြီး ၎င်း၏ ပြီးစီးမှုကို အလားတူ ဖော်ပြပါ။ ကလိုင်းဘက် သတ်မှတ်ချိန်သည် သင့်အပလီကေးရှင်း မည်မျှကြာ စောင့်သည်ကို ကန့်သတ်သည်၊ ၎င်းသည် ပရောက်စီ၏ ကိုယ်ပိုင် အပေါ်စီး ချိတ်ဆက်မှု အချိန်သတ်မှတ်ချက်ကို ပြန်လည် ပြင်ဆင်ခြင်း မဟုတ်ပါ။