🌐 Detecting your location…
📢 Advertisement — Configure AdSense in Appearance → Customize → AdSense Settings

Python asyncio সম্পূর্ণ গাইড 2026: Async/অপেক্ষা, কাজ এবং বাস্তব নিদর্শন

⏱️2 min read  ·  338 words
Python asyncio Complete Guide 2026: Async/Await, Tasks & Real Patterns

পাইথনেরasyncioমডিউল async/await সিনট্যাক্স ব্যবহার করে সমসাময়িক কোড লিখতে সক্ষম করে। 2026 সালে, asyncio শক্তি FastAPI, Starlette, এবং aiohttp। এই নির্দেশিকাটি ইভেন্ট লুপ থেকে বাস্তব-বিশ্বের নিদর্শন পর্যন্ত সবকিছু কভার করে।

asyncio কি?

অ্যাসিঙ্কিও সমসাময়িক কাজগুলি পরিচালনা করতে একটি একক-থ্রেডেড ইভেন্ট লুপ ব্যবহার করে — নেটওয়ার্ক I/O এবং APIগুলির জন্য উপযুক্ত যেখানে আপনি কম্পিউটিং নয়, অপেক্ষায় বেশিরভাগ সময় ব্যয় করেন।

import asyncio

async def main():
    print('Hello asyncio!')
    await asyncio.sleep(1)
    print('Done!')

asyncio.run(main())

async/await সিনট্যাক্স

ব্যবহার করুনasync defএকটি coroutine সংজ্ঞায়িত করতে. ব্যবহার করুনawaitএকটি ফলাফল প্রস্তুত না হওয়া পর্যন্ত বিরতি.

import asyncio

async def fetch_data(url: str) -> str:
    await asyncio.sleep(0.5)  # simulate network
    return f'Data from {url}'

async def main():
    result = await fetch_data('https://api.example.com')
    print(result)

asyncio.run(main())

একসাথে কাজ চালানো

asyncio.gather()একযোগে একাধিক করোটিন চালায়। তিনটি 1-সেকেন্ডের কাজ ~1 সেকেন্ডে শেষ হয়, 3 নয়।

import asyncio, time

async def task(name: str, delay: float):
    print(f'Start {name}')
    await asyncio.sleep(delay)
    return name

async def main():
    start = time.time()
    results = await asyncio.gather(
        task('A', 1.0),
        task('B', 2.0),
        task('C', 0.5),
    )
    print(f'Done in {time.time()-start:.2f}s: {results}')
    # ~2.0s not 3.5s

asyncio.run(main())

aiohttp

এর সাথে asyncio একই সময়ে 100টি URL আনুন প্রায় একই সময়ে একটি আনার সময়।

import asyncio, aiohttp

async def fetch(session, url):
    async with session.get(url) as resp:
        return await resp.text()

async def main():
    urls = ['https://httpbin.org/delay/1'] * 5
    async with aiohttp.ClientSession() as session:
        results = await asyncio.gather(*[fetch(session, u) for u in urls])
    print(f'Fetched {len(results)} pages')

asyncio.run(main())

asyncio.প্রযোজক-ভোক্তার জন্য সারি

import asyncio

async def producer(q: asyncio.Queue):
    for i in range(5):
        await q.put(f'item-{i}')
        await asyncio.sleep(0.2)
    await q.put(None)  # sentinel

async def consumer(q: asyncio.Queue):
    while True:
        item = await q.get()
        if item is None: break
        print(f'Consumed {item}')

async def main():
    q = asyncio.Queue(maxsize=3)
    await asyncio.gather(producer(q), consumer(q))

asyncio.run(main())

ত্রুটি হ্যান্ডলিং

import asyncio

async def risky(n):
    if n == 2: raise ValueError(f'Task {n} failed!')
    return f'Task {n} OK'

async def main():
    results = await asyncio.gather(
        *[risky(i) for i in range(4)],
        return_exceptions=True
    )
    for r in results:
        print('Error:', r if isinstance(r, Exception) else r)

asyncio.run(main())

সর্বোত্তম অভ্যাস

  • কখনও ব্যবহার করবেন নাtime.sleep()— ব্যবহার করুনawait asyncio.sleep()
  • কোরোটিনের ভিতরে I/O ব্লক করা এড়িয়ে চলুন
  • ব্যবহার করুনasyncio.run()প্রবেশ বিন্দু হিসাবে
  • ব্যবহার করুনasyncio.TaskGroup(পাইথন 3.11+) কাঠামোবদ্ধ একত্রিতার জন্য
  • |||| দিয়ে ডিবাগ করুন উপসংহারPYTHONASYNCIODEBUG=1

asyncio হল Node.js-শৈলীর একযোগে পাইথনের উত্তর। মাস্টার

, প্রয়োজনে সারি যোগ করুন এবং ক্লিনার ত্রুটির সীমানাগুলির জন্য টাস্কগ্রুপে যান। API, স্ক্র্যাপার এবং মাইক্রোসার্ভিসের জন্য পারফেক্ট।asyncio.gather(), add queues when needed, and move to TaskGroup for cleaner error boundaries. Perfect for APIs, scrapers, and microservices.

✍️ Leave a Comment

Your email address will not be published. Required fields are marked *

🌐 Read in:🇬🇧 English🇩🇪 Deutsch🇧🇷 Português🇸🇦 العربية🇮🇳 हिन्दी🇧🇩 বাংলা