Skip to main content

Fast and simple HTTP client library with async support and beautiful logging

Project description

GitHub stars GitHub forks GitHub watchers

httpx ruff mypy Python License CodSpeed

Features

  • Simple API - Minimal boilerplate with decorators
  • Beautiful Logging - Colorful request/response logs with timing
  • Async Support - Built on httpx for high performance
  • Type Safe - Full type annotations with Pydantic support
  • All HTTP Methods - GET, POST, PUT, PATCH, DELETE
  • Middleware - Request/response interception and modification
  • Rate Limiting - Multiple strategies (token bucket, leaky bucket, etc.)
  • HTTP/2 Support - Optional HTTP/2 protocol support
  • Request Info - Access to request details from response object

Quick Start

Installation

pip install fasthttp-client

Basic Usage

from fasthttp import FastHTTP
from fasthttp.response import Response

app = FastHTTP()


@app.get(url="https://httpbin.org/get")
async def get_data(resp: Response):
    return resp.json()


if __name__ == "__main__":
    app.run()

Output:

16:09:18.955 │ INFO     │ fasthttp │ ✔ FastHTTP started
16:09:19.519 │ INFO     │ fasthttp │ ✔ ← GET https://httpbin.org/get [200] 458.26ms
16:09:20.037 │ INFO     │ fasthttp │ ✔ Done in 1.08s

HTTP/2 Support

Enable HTTP/2 for better performance with servers that support it:

from fasthttp import FastHTTP
from fasthttp.response import Response

app = FastHTTP(http2=True)

@app.get(url="https://www.google.com/")
async def get_google(resp: Response):
    print(f"Status: {resp.status}")
    return resp.status

if __name__ == "__main__":
    app.run()

Note: Install with pip install fasthttp-client[http2] for HTTP/2 support. HTTP/2 works with servers like Google, GitHub, YouTube, and many others. Servers that don't support HTTP/2 will automatically fall back to HTTP/1.1.

Middleware

Add custom logic to requests and responses:

from fasthttp import FastHTTP
from fasthttp.middleware import BaseMiddleware
from fasthttp.response import Response
from fasthttp.routing import Route
from fasthttp.types import RequestsOptinal

class LoggingMiddleware(BaseMiddleware):
    async def before_request(
        self, route: Route, config: RequestsOptinal
    ) -> RequestsOptinal:
        print(f"Sending {route.method} to {route.url}")
        return config

app = FastHTTP(middleware=[LoggingMiddleware()])

@app.get(url="https://api.example.com/data")
async def get_data(resp: Response) -> dict:
    return resp.json()

if __name__ == "__main__":
    app.run()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fasthttp_client-1.2.4.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fasthttp_client-1.2.4-py3-none-any.whl (71.8 kB view details)

Uploaded Python 3

File details

Details for the file fasthttp_client-1.2.4.tar.gz.

File metadata

  • Download URL: fasthttp_client-1.2.4.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for fasthttp_client-1.2.4.tar.gz
Algorithm Hash digest
SHA256 9967b6ac8fc1582da332551fce9f21699bf0b0ca6211d46a52595e26b4a9bfa3
MD5 6d1b743aeffba8107790dc0df59657c6
BLAKE2b-256 e31cf231f417fdaa5abd4f6ad2c97539e036ac263702738ee148aa978b700e36

See more details on using hashes here.

File details

Details for the file fasthttp_client-1.2.4-py3-none-any.whl.

File metadata

File hashes

Hashes for fasthttp_client-1.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 167d3651b7e36f6ef9730014fe766f435125ae5e8798741bd9791826f1d42165
MD5 5af65f5c49db5c1ee42af324225cdf96
BLAKE2b-256 71d6668dd6fd8920fa28f2dd7e9e46d000fb205e9bc4befa9ed3b100b2a532ba

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page