HTTPX2؛ از درخواست‌های تکی تا Client قابل استفادهٔ مجدد

چرا مهم است

اگر با Requests کار کرده‌ای، این آموزش مسیر آشنایی با درخواست‌های غیرمسدودکننده و تعیین را معرفی می‌کند. همچنین توضیح می‌دهد چطور با پاسخ بزرگ را بدون بارگذاری کامل در حافظه پردازش کنی.

قبل از خواندن، این‌ها را بدان۶ مفهوم
fork

پروژه‌ای جدا که از کد یک پروژهٔ موجود آغاز می‌شود و مسیر توسعه و نگهداری مستقلی دارد.

بیشتر: fork

timeout

محدودیت زمانی انتظار برای انجام یک عملیات؛ اگر عملیات در زمان تعیین‌شده انجام نشود، خطای مربوط گزارش می‌شود.

در حال نگارش: timeout

streaming

دریافت و پردازش تدریجی داده، بدون نیاز به نگهداری تمام آن در حافظه.

در حال نگارش: streaming

Client

بخشی از برنامه که درخواست‌ها را به server می‌فرستد و پاسخ دریافت می‌کند؛ می‌تواند تنظیمات و اتصال‌ها را برای چند درخواست نگه دارد.

در حال نگارش: Client

connection pooling

نگهداری و استفادهٔ مجدد از مجموعه‌ای از اتصال‌ها، به‌جای ساخت اتصال تازه برای هر درخواست.

در حال نگارش: connection pooling

trust store

مجموعه‌ای از certificate‌های مورد اعتماد که سیستم یا برنامه برای بررسی اعتبار ارتباط امن از آن استفاده می‌کند.

در حال نگارش: trust store

آموزش Real Python به استفاده از HTTPX2 برای ارسال درخواست‌های HTTP در Python می‌پردازد. HTTPX2 یک fork از HTTPX است که Pydantic در سال ۲۰۲۶ نگهداری آن را بر عهده گرفته است. این کتابخانه API مشابه Requests را با پشتیبانی از درخواست‌های async،؜ timeout پیش‌فرض و HTTP/2 همراه می‌کند.

HTTPX و HTTPX2 دو package جدا هستند، نه دو نام برای یک پروژه. نام نصب و import آن‌ها متفاوت است و می‌توانند بدون تداخل در یک محیط قرار بگیرند. طبق متن، HTTPX2 همان API عمومی HTTPX را حفظ کرده و بیشتر کدها بدون تغییر منتقل می‌شوند. بااین‌حال، نام ابزار command-line و package زیربنایی httpcore تغییر کرده و پشتیبانی از Python 3.9 کنار گذاشته شده است.

تغییر دیگر به تأیید TLS مربوط است: HTTPX2 به‌جای فهرست certificate همراه کتابخانه، از trust store سیستم‌عامل استفاده می‌کند. در محیط شرکتی که Proxy ترافیک TLS را بررسی می‌کند، اگر root certificate شرکت در سیستم‌عامل نصب شده باشد، HTTPX2 بدون تنظیمات اضافه به آن اعتماد می‌کند.

آموزش با یک درخواست GET از طریق httpx2.get و خواندن status_code و خروجی json() شروع می‌شود. سپس مسیر استفاده از Client قابل استفادهٔ مجدد را معرفی می‌کند. این Client با connection pooling،؜ اتصال‌ها و تنظیمات را میان درخواست‌ها به اشتراک می‌گذارد، به‌جای آنکه برای هر درخواست اتصال تازه‌ای باز کند.

در معرفی سرفصل‌ها، AsyncClient برای ارسال درخواست‌های async با asyncio مطرح شده است. همچنین timeout با تنظیمات جزئی و ساختار مشخص exception‌ها برای قابل پیش‌بینی شدن خطاها، streaming برای پردازش پاسخ‌های بزرگ بدون بارگذاری کامل آن‌ها در حافظه، و فعال‌سازی HTTP/2 با یک dependency اضافه و یک argument ذکر شده‌اند.

برای دنبال کردن آموزش، Python 3.10 یا جدیدتر و آشنایی با درخواست‌های پایه در Requests،؜ dictionary،؜ دستور with و exception لازم است؛ تجربهٔ قبلی asyncio لازم نیست. متن پیشنهاد می‌کند ابتدا virtual environment ساخته و فعال شود تا package‌های نصب‌شده از بقیهٔ سیستم جدا بمانند.

نکته کلیدی

برای درخواست‌های متعدد، استفاده از قابل استفادهٔ مجدد را در نظر بگیر؛ متن می‌گوید اتصال‌ها را میان درخواست‌ها به اشتراک می‌گذارد. برای شروع آموزش هم Python 3.10 یا جدیدتر لازم داری، نه تجربهٔ قبلی asyncio.

خواندن مقاله اصلی (در زبانه‌ی جدید باز می‌شود)
برچسب‌ها (۳)