sync এবং await সহজ ব্যাখ্যা
async: যখন আপনি একটি ফাংশনকে asynchronous হিসেবে চিহ্নিত করেন। এটিasync defদিয়ে শুরু হয়।await: এটি একটি asynchronous ফাংশনের ফলাফল অপেক্ষা করতে ব্যবহৃত হয়। এটিasyncফাংশনের মধ্যে ব্যবহৃত হয়।
উদাহরণ: একটি সিম্পল API ফেচার তৈরি করা
আমরা একটি সিম্পল অ্যাপ তৈরি করবো যা একটি API থেকে ডেটা ফেচ করবে। এটি jsonplaceholder নামে একটি টেস্ট API থেকে তথ্য নেবে।
১. প্রথমে প্রজেক্ট সেটআপ
প্রথমে, আপনাকে httpx লাইব্রেরি ইনস্টল করতে হবে। এটি asynchronous HTTP রিকোয়েস্ট করার জন্য ব্যবহার করা হবে।
pip install httpx
২. কোড লেখার জন্য ফাইল তৈরি করুন
fetch_data.py নামে একটি ফাইল তৈরি করুন এবং নিচের কোডটি লিখুন:
import httpx
import asyncio
# একটি asynchronous ফাংশন যা URL থেকে ডেটা ফেচ করবে
async def fetch_data(url):
print(f"{url} থেকে ডেটা ফেচ করা হচ্ছে...") # ফেচ করার প্রক্রিয়া জানাচ্ছে
async with httpx.AsyncClient() as client: # HTTP ক্লায়েন্ট তৈরি করছি
response = await client.get(url) # URL থেকে GET রিকোয়েস্ট পাঠানো হচ্ছে
return response.json() # রেসপন্স JSON আকারে ফেরত দিচ্ছে
# মূল asynchronous ফাংশন
async def main():
urls = [
'https://jsonplaceholder.typicode.com/posts', # পোস্টের তথ্যের জন্য URL
'https://jsonplaceholder.typicode.com/users', # ব্যবহারকারীর তথ্যের জন্য URL
'https://jsonplaceholder.typicode.com/comments' # মন্তব্যের তথ্যের জন্য URL
]
# একসাথে সব URL থেকে ডেটা ফেচ করতে
results = await asyncio.gather(*(fetch_data(url) for url in urls))
# ফলাফল প্রদর্শন করা
for i, result in enumerate(results):
print(f"URL {i + 1} এর ফলাফল:")
print(result[:2]) # প্রথম দুটি আইটেম প্রদর্শন করছি
# কোডের এন্ট্রি পয়েন্ট
if __name__ == "__main__":
asyncio.run(main()) # মূল ফাংশন চালানো
কোডের বিবরণ
- লাইব্রেরি আমদানি: প্রথমে
httpxএবংasyncioলাইব্রেরিগুলি আমদানি করা হচ্ছে। fetch_dataফাংশন:async def fetch_data(url): একটি asynchronous ফাংশন যা একটি URL নেয়।print(f"{url} থেকে ডেটা ফেচ করা হচ্ছে..."): এটি জানাচ্ছে কোন URL থেকে ডেটা ফেচ হচ্ছে।async with httpx.AsyncClient() as client: একটি HTTP ক্লায়েন্ট তৈরি করা হচ্ছে।response = await client.get(url): এটি URL থেকে ডেটা নিয়ে আসার জন্য GET রিকোয়েস্ট করছে এবংawaitএর মাধ্যমে অপেক্ষা করছে।return response.json(): এটি রেসপন্সের JSON ডেটা ফেরত দিচ্ছে।
mainফাংশন:async def main(): এটি মূল asynchronous ফাংশন।urls: এখানে বিভিন্ন API URL এর একটি তালিকা তৈরি করা হচ্ছে।results = await asyncio.gather(...): এটি সব URL থেকে ডেটা একসাথে ফেচ করছে।for i, result in enumerate(results): ফেচ করা ডেটা প্রদর্শনের জন্য একটি লুপ চলছে।
- কোডের এন্ট্রি পয়েন্ট:
if __name__ == "__main__":: এই অংশটি চেক করে যদি স্ক্রিপ্টটি সরাসরি চালানো হয়।asyncio.run(main()): এটি মূল ফাংশনকে চালাতে ব্যবহৃত হচ্ছে।
৩. কোডটি রান করুন
এই কোডটি চালাতে, আপনার টার্মিনালে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
python fetch_data.py