aiohttp – طلبات HTTP غير متزامنة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة عن aiohttp

aiohttp هي مكتبة غير متزامنة قوية للتعامل مع عميل وخادم HTTP بلغة بايثون. تم بناؤها على أساس asyncio وتوفر واجهة مرنة لإنشاء تطبيقات ويب قابلة للتوسع وتنفيذ طلبات HTTP متوازية. تدعم المكتبة HTTP/1.1 وWebSocket والكوكيز والجلسات والتكامل مع محركات القوالب الشهيرة.

ما هي aiohttp

aiohttp (إدخال/إخراج HTTP غير متزامن) هي مكتبة بايثون شاملة تجمع بين وظائف عميل HTTP وخادم HTTP باستخدام البرمجة غير المتزامنة. صُممت للعمل مع asyncio، مما يسمح بإنشاء تطبيقات ويب عالية الأداء قادرة على معالجة آلاف الاتصالات المتزامنة.

الميزات الرئيسية للمكتبة

توفر مكتبة aiohttp مجموعة واسعة من الإمكانيات لتطوير تطبيقات الويب الحديثة. تدعم إنشاء عملاء HTTP بسيطين للتفاعل مع واجهات API الخارجية، بالإضافة إلى خوادم ويب كاملة مع دعم الوسائط الوسيطة (middleware) والتوجيه والقوالب.

مزايا وميزات aiohttp

الهندسة غير المتزامنة

الميزة الرئيسية لـ aiohttp هي طبيعته غير المتزامنة. بفضل استخدام asyncio، يمكن للمكتبة معالجة العديد من الاتصالات المتزامنة دون حظر تدفق التنفيذ. مما يجعلها الخيار الأمثل للتطبيقات ذات الأحمال العالية.

تعدد الاستخدامات

يدعم aiohttp وظائف العميل والخادم في حزمة واحدة. وهذا يعني أن المطورين يمكنهم استخدام مكتبة واحدة لإنشاء تطبيقات ويب كاملة تعمل في نفس الوقت كعميل وخادم HTTP.

دعم مدمج للتقنيات الحديثة

تدعم المكتبة WebSocket بشكل أصلي، مما يسمح بإنشاء تطبيقات تفاعلية في الوقت الفعلي. كما تتضمن دعمًا لتنسيقات بيانات مختلفة، بما في ذلك JSON والنماذج والملفات.

قابلية التوسع والمرونة

توفر aiohttp نظامًا للوسائط الوسيطة (middleware) لإضافة وظائف إضافية، ونظام توجيه لتنظيم معالجات URL، وإمكانية التكامل مع محركات القوالب الشهيرة.

التثبيت والإعداد الأساسي

تثبيت المكتبة الأساسية

pip install aiohttp

تثبيت التبعيات الإضافية

للعمل مع قوالب Jinja2:

pip install aiohttp_jinja2 jinja2

للعمل مع الجلسات:

pip install aiohttp_session

التحقق من التثبيت

بعد التثبيت، يمكن التحقق من إصدار المكتبة:

import aiohttp
print(aiohttp.__version__)

عميل HTTP غير متزامن مع aiohttp

أساسيات العمل مع ClientSession

ClientSession هي الفئة الرئيسية لتنفيذ طلبات HTTP في aiohttp. تدير مجموعة الاتصالات وتضمن إعادة استخدام الاتصالات بكفاءة.

import aiohttp
import asyncio

async def fetch(url):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            return await response.text()

# تشغيل الدالة غير المتزامنة
asyncio.run(fetch('https://example.com'))

تكوين جلسة العميل

async def create_configured_session():
    timeout = aiohttp.ClientTimeout(total=30)
    connector = aiohttp.TCPConnector(limit=100, limit_per_host=10)
    
    async with aiohttp.ClientSession(
        timeout=timeout,
        connector=connector,
        headers={'User-Agent': 'MyApp/1.0'}
    ) as session:
        return session

إرسال طلبات GET و POST

تنفيذ طلبات GET

async                    

توصيات