အင်တာနက်နည်းပညာလျင်မြန်စွာဖွံ့ဖြိုးတိုးတက်မှုနှင့်အတူဖိုင်လွှဲပြောင်းခြင်း 0 န်ဆောင်မှုများသည်အမျိုးမျိုးသော application များတွင်ပိုမိုအရေးကြီးသောအခန်းကဏ် play မှပါ 0 င်သည်။ ကြီးထွားလာသောအသုံးပြုသူဝယ်လိုအားနှင့်ရင်ဆိုင်ရခြင်းနှင့်ထိရောက်သောနှင့်တစ်ပြိုင်နက်တည်း fearturrent file ပြောင်းရွှေ့မှုသည် developer များအပေါ်အာရုံစူးစိုက်မှုဖြစ်လာသည်။ ပိတ်ဆို့ခြင်းမဟုတ်သောတစ်ပြိုင်နက်တည်းပရိုဂရမ်ပုံမော်ဒယ်လ်တစ်ခုအနေနှင့်ပြတ်တောင်းပြတ်တောင်းဆိုင်ရာကော်ပိုရေးရှင်းများသည် there တစ်ခုတည်းကိုတစ်ပြိုင်နက်တည်းကိုင်တွယ်နိုင်ပြီးစနစ်၏တစ်ပြိုင်နက်တည်းလုပ်ဆောင်နိုင်စွမ်းကိုတိုးတက်ကောင်းမွန်စေသည်။ ဤဆောင်းပါးသည်စွမ်းဆောင်ရည်မြင့်ဖိုင်လွှဲပြောင်းမှုန်ဆောင်မှုများကိုဖန်တီးရန် asynchronous coroutine နည်းပညာကိုမည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးရန်တိကျသောကုဒ်နမူနာများကိုပေါင်းစပ်မည်။
ပထမ ဦး စွာကျွန်ုပ်တို့သည် client's file upload တောင်းဆိုမှုကိုကိုင်တွယ်ရန် asynchronous coroutine function တစ်ခုကိုအကောင်အထည်ဖော်ရန်လိုအပ်သည်။ ဤလုပ်ဆောင်ချက်သည်သုံးစွဲသူမှ Data Stream မှ Data Stream ကိုဖတ်ပြီး server local file သို့ရေးသည်။ နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
import asyncio
async def handle_upload(reader, writer):
data = await reader.read(1024)
with open('upload_file.txt', 'wb') as f:
while data:
f.write(data)
data = await reader.read(1024)
writer.close()
ဤဥပမာတွင် လက်ကိုင် 1.Upload function သည် စောင့်ဆိုင်းခြင်း သော့ချက်စာလုံးမှတစ်ဆင့်စာဖတ်ခြင်းကိုအကောင်အထည်ဖော်ခြင်း, ပိတ်ဆို့ခြင်းကိုရှောင်ရှားခြင်း,
ထို့နောက် client ၏ connection တောင်းဆိုမှုကိုနားထောင်ခြင်းနှင့်ပြုပြင်ခြင်းအတွက်တာ 0 န်ယူမှုရှိသောပြတ်တောင်းပြတ်တောင်းလုပ်ငန်းဆောင်တာကိုဖန်တီးရန်လိုအပ်သည်။ Code pegager ်ဌာန်းချက်မှာအောက်ပါအတိုင်းဖြစ်သည် -
async def start_server():
server = await asyncio.start_server(
handle_upload, '127.0.0.1', 8888
)
await server.serve_forever()
ဤလုပ်ဆောင်ချက်သည် TCP server ကို Asyncio.start_server မှတဆင့် tcp server ကိုဖန်တီးသည်။
အဓိကပရိုဂရမ်ဝင်ပေါက်တွင်ဖြစ်ရပ် loop ကိုရယူပါ။ ဆာဗာကိုစတင်ပါ။
if __name__ == '__main__':
loop = asyncio.get_event_loop()
try:
loop.run_until_complete(start_server())
except KeyboardInterrupt:
pass
finally:
loop.close()
Keykintrintratfrsprint ကိုဒီနေရာမှာကြွေးရှင်းကိုပိတ်ထားပြီး server ကိုပိတ်ထားပြီးဒီအစီအစဉ်ကိုတည်ငြိမ်အောင်လုပ်တယ်။
ဆာဗာ overload ကိုရှောင်ရှားရန်ကျွန်ုပ်တို့သည်တစ်ပြိုင်နက်တည်းတင်ထားသောဆက်သွယ်မှုအရေအတွက်ကိုကန့်သတ်ရန်ပြတ်တောင်းပြတ်တောင်းပရောဖက်ပြုချက်များကိုအသုံးပြုနိုင်သည်။
uploads_semaphore = asyncio.Semaphore(100)
async def handle_upload(reader, writer):
async with uploads_semaphore:
data = await reader.read(1024)
# ဖိုင်လွှဲပြောင်းယုတ္တိဗေဒ...
Asyncio.semaphore နှင့် Syntax နှင့် Syntax နှင့် Async ကိုတစ်ပြိုင်နက်တည်းလုပ်ဆောင်ခြင်းနှင့်စနစ်တည်ငြိမ်မှုကိုတိုးတက်စေရန်အတွက် syntax နှင့်အတူ Syntax နှင့်အတူသုံးပါ။
ဖိုင်လွှဲပြောင်းမှုမြန်နှုန်းကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်ရန်နှင့် ပတ်သက်. ပြတ်ပြတ်သားသားဖိုင်အမျိုးအစားအရိုက်စာ ကြည့်တိုက်သည် စာကြည့်တိုက်မ 0 င်ခြင်းနှင့်အရေးအသားပြုခြင်းကိုရရှိရန်အသုံးပြုနိုင်သည်။
from aiofile import AIOFile
async def handle_upload(reader, writer):
data = await reader.read(1024)
async with AIOFile('upload_file.txt', 'wb') as afp:
while data:
await afp.write(data)
data = await reader.read(1024)
writer.close()
Aiofile မှတစ်ဆင့်ဖိုင်ဖတ်ခြင်းနှင့်ရေးခြင်းစစ်ဆင်ရေးလုပ်ငန်းများသည်ပြတ်တောင်းပြတ်တောင်းလုပ်ငန်းများဖြစ်လာပြီး i / o စွမ်းဆောင်ရည်၏အားသာချက်များကိုတိုးမြှင့်ရန်နှင့်ထုတ်လွှင့်ချိန်ကိုအမြင့်ဆုံးပြုလုပ်သည်။
ဤဆောင်းပါးသည်အလျင်အမြန်အမြင့်တင်ထားသော 0 န်ဆောင်မှုဆိုင်ရာ 0 န်ဆောင်မှုလုပ်ငန်း, တစ်ပြိုင်တည်းဆက်သွယ်မှုယန္တရားနှင့်ပြတ်တောင်းသောဆက်သွယ်မှုထိန်းချုပ်မှုနှင့်ပြတ်တောင်းသောဆက်သွယ်မှုထိန်းချုပ်မှုများအပါအ 0 င်အထင်အရှားဖိုင်လွှဲပြောင်းခြင်း 0 န်ဆောင်မှုများအပေါ်အကောင်အထည်ဖော်ရန်အဓိကနည်းစနစ်များကိုပြသရန်ဤဆောင်းပါးတွင်ပါ 0 င်သော Corouthead Development Development Development Development Development Development Development Development Developments ဆင်ခြင်တုံတရားအားဖြင့်ဤနည်းလမ်းများကို အသုံးပြု. စနစ်၏တစ်ပြိုင်နက်တည်းလုပ်ဆောင်နိုင်စွမ်းနှင့်ဖိုင်လွှဲပြောင်းမှုစွမ်းဆောင်ရည်သိသိသာသာတိုးတက်လာနိုင်သည်။ အနာဂတ်တွင် allynchronous database drabase drivers နှင့် cachegases မဟာဗျူဟာများကိုလည်းထပ်မံတိုးတက်စေရန်နှင့်ပိုမိုကောင်းမွန်စေရန်ပေါင်းစပ်နိုင်သည်။ ဤဆောင်းပါး၏အကြောင်းအရာသည်သက်ဆိုင်ရာဖွံ့ဖြိုးရေးအလေ့အကျင့်များအတွက်အသုံးဝင်သောရည်ညွှန်းချက်ပေးနိုင်လိမ့်မည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။