ویرگول
ورودثبت نام
Shayan Heidari
Shayan Heidariیه برنامه نویس ...
Shayan Heidari
Shayan Heidari
خواندن ۲ دقیقه·۷ روز پیش

با requests خداحافظی کنید: fasthttp سریع‌ترین کلاینت HTTP پایتون شد

در دنیای توسعه وب و APIها با پایتون، انتخاب یک کتابخانه HTTP کلاینت خوب می‌تونه تفاوت زیادی در عملکرد، سادگی کد و مصرف منابع ایجاد کنه. کتابخانه‌های معروفی مثل requests، httpx و aiohttp سال‌هاست که محبوب هستن، اما اگر به دنبال چیزی سبک‌تر، سریع‌تر و با وابستگی‌های کمتر هستید، fasthttp گزینه‌ای عالیه که اخیراً توجه زیادی رو جلب کرده.

fasthttp چیست؟

fasthttp یک کتابخانه HTTP/1.1 کلاینت سبک و سریع برای پایتون هست که هم API synchronous (هم‌زمان) و هم asynchronous (ناهم‌زمان) رو در یک رابط واحد ارائه می‌ده. این کتابخانه روی h11 (یک پیاده‌سازی خالص پایتون از پروتکل HTTP) ساخته شده و تمرکز اصلیش روی سرعت، قابلیت گسترش و حداقل وابستگی‌ها هست.

ویژگی‌های کلیدی fasthttp که اون رو متمایز می‌کنه

  • API واحد برای sync و async: بدون نیاز به تغییر کد، می‌تونید هم به صورت synchronous و هم asynchronous ازش استفاده کنید. (مشابه httpx اما سبک‌تر)

  • Connection Pooling: اتصالات رو reuse می‌کنه تا throughput بالاتری داشته باشید.

  • پشتیبانی خودکار از فشرده‌سازی: gzip به صورت پیش فرض، و brotli اختیاری.

  • Streaming: برای دانلود فایل‌های بزرگ بدون مصرف حافظه زیاد.

  • JSON Handling خودکار: پاسخ‌های JSON رو به طور خودکار decode می‌کنه.

  • Timeoutهای قابل تنظیم: کنترل دقیق روی timeout اتصال و خواندن.

  • Retry و Exponential Backoff: سیاست‌های retry هوشمند برای مدیریت خطاها.

  • Circuit Breaker اختیاری: جلوگیری از شکست‌های زنجیره‌ای.

  • مدیریت Cookie: پشتیبانی کامل از Cookie Jar.

  • وابستگی‌های minimal: فقط h11 اصلی، بدون بار اضافی.

این ویژگی‌ها باعث می‌شن fasthttp برای پروژه‌های web scraping، API clientها، میکروسرویس‌ها و هر جایی که نیاز به درخواست‌های HTTP سریع و کارآمد داره، ایده‌آل باشه.

مقایسه با کتابخانه‌های محبوب (requests، httpx، aiohttp)

  • requests: ساده و محبوب، اما فقط synchronous و سنگین‌تر (بر پایه urllib3).

  • httpx: مشابه fasthttp در API واحد sync/async، اما وابستگی‌های بیشتر و کمی سنگین‌تر.

  • aiohttp: خیلی سریع در حالت async، اما فقط asynchronous و نیاز به کد بیشتر برای مدیریت.

fasthttp با تمرکز روی minimalism، در بسیاری از سناریوها سرعت بالاتر و مصرف منابع کمتری نسبت به رقبا نشون می‌ده، به خصوص وقتی که به دنبال یک کلاینت سبک با ویژگی‌های کامل هستید.

نصب و استفاده سریع

نصب خیلی ساده‌ست:

pip install -U pyfasthttp

برای پشتیبانی از brotli:

pip install -U brotli

مثال synchronous:

from fasthttp import Client from fasthttp.timeouts import Timeout with Client(timeout=Timeout(connect=5, read=10)) as client: resp = client.get("https://httpbin.org/get") print(resp.status_code) print(resp.json())

مثال asynchronous:

import asyncio from fasthttp import Client async def main(): async with Client() as client: resp = await client.get("https://httpbin.org/get") print(resp.json()) asyncio.run(main())

مثال streaming:

with Client() as client: resp = client.get("https://httpbin.org/stream/20", stream=True) for chunk in resp.iter_bytes(): print(f"دریافت چانک: {len(chunk)} بایت")

چرا باید fasthttp رو امتحان کنید؟

اگر پروژه‌تون نیاز به یک HTTP کلاینت سریع، سبک و انعطاف‌پذیر داره، fasthttp می‌تونه انتخاب بهتری نسبت به گزینه‌های سنگین‌تر باشه. با وابستگی‌های کم، شروع سریع و ویژگی‌های پیشرفته، این کتابخانه داره به سرعت رشد می‌کنه و ارزش یک نگاه رو داره.

به گیتهاب پروژه سر بزنید، star بدید و اگر ایده‌ای داشتید، contribute کنید! 🚀

#پایتون #Python #HTTP #کتابخانه_پایتون #fasthttp #وب_اسکریپینگ #API #برنامه_نویسی

پایتونکتابخانه پایتونبرنامه نویسیhttp
۱
۰
Shayan Heidari
Shayan Heidari
یه برنامه نویس ...
شاید از این پست‌ها خوشتان بیاید