Skip to main content

Compression middleware for Starlette - supporting ZStd, Brotli, and GZip

Project description

starlette-compress

PyPI - Python Version Liberapay Patrons GitHub Sponsors

starlette-compress is a fast and simple middleware for compressing responses in Starlette. It supports more compression algorithms than Starlette's built-in GZipMiddleware, and has more sensible defaults.

  • Python 3.8+ support
  • Compatible with asyncio and trio backends
  • ZStd, Brotli, and GZip compression
  • Sensible default configuration
  • The Unlicense — public domain dedication
  • Semantic Versioning compliance

Installation

pip install starlette-compress

Basic Usage

Starlette

from starlette.applications import Starlette
from starlette.middleware import Middleware
from starlette_compress import CompressMiddleware

middleware = [
    Middleware(CompressMiddleware)
]

app = Starlette(routes=..., middleware=middleware)

FastAPI

You can use starlette-compress with FastAPI too:

from fastapi import FastAPI
from starlette_compress import CompressMiddleware

app = FastAPI()
app.add_middleware(CompressMiddleware)

Advanced Usage

Changing Minimum Response Size

Control the minimum size of the response to compress. By default, responses must be at least 500 bytes to be compressed.

# Starlette
middleware = [
    Middleware(CompressMiddleware, minimum_size=1000)
]

# FastAPI
app.add_middleware(CompressMiddleware, minimum_size=1000)

Tuning Compression Levels

Adjust the compression levels for each algorithm. Higher levels mean smaller files but slower compression. Default level is 4 for all algorithms.

# Starlette
middleware = [
    Middleware(CompressMiddleware, zstd_level=6, brotli_quality=6, gzip_level=6)
]

# FastAPI
app.add_middleware(CompressMiddleware, zstd_level=6, brotli_quality=6, gzip_level=6)

Supporting Custom Content-Types

Manage the supported content-types. Unknown response types are not compressed. Check here for the default configuration.

from starlette_compress import add_compress_type, remove_compress_type

add_compress_type("application/my-custom-type")
remove_compress_type("application/json")

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

starlette_compress-1.1.0.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

starlette_compress-1.1.0-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file starlette_compress-1.1.0.tar.gz.

File metadata

  • Download URL: starlette_compress-1.1.0.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for starlette_compress-1.1.0.tar.gz
Algorithm Hash digest
SHA256 b78e0ba949cf9356dbb4227f7a981e880d14ef4818e671aff9f4e8e5d08a9239
MD5 92b050844fc0dee54107dd3bfc439430
BLAKE2b-256 23e01f4acbba532c63122b1bf15053f030c3c44acd3ac3be880e0e56ed675bba

See more details on using hashes here.

Provenance

File details

Details for the file starlette_compress-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for starlette_compress-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 923e35558468c0bfad293e30db51ca98c39acb525c50acc90b33ca3e0c7d9ab7
MD5 2ccbf9c33170608e4a83b238a981ecb0
BLAKE2b-256 08afba63d6ab135b2334279d76c9a4122743f3afb37a6092ac0cadc2c8bfbbe3

See more details on using hashes here.

Provenance

Supported by

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