Welcome to Muffin’s documentation!#

Fast, lightweight, asynchronous ASGI web framework for Python.

Why Muffin?#

Muffin combines the simplicity of microframeworks with native ASGI performance, supporting multiple async libraries (Asyncio, Trio, Curio) out of the box. Its rich plugin ecosystem makes building modern web applications pleasant and efficient.

Key Features#

Installation#

Muffin requires Python 3.10 or newer. We recommend using the latest stable Python.

Install via pip:

$ pip install muffin

For the standard installation with gunicorn, uvicorn, uvloop, httptools:

$ pip install muffin[standard]

Dependencies#

These packages will be installed automatically:

Quickstart#

Create a simple “Hello User” app:

import muffin

app = muffin.Application()

@app.route('/', '/hello/{name}')
async def hello(request):
    name = request.path_params.get('name', 'world')
    return f'Hello, {name.title()}!'

Save this as example.py and run:

$ uvicorn example:app

Visit http://localhost:8000 or http://localhost:8000/hello/username in your browser.

Benchmarks#

Performance comparisons are available at: http://klen.github.io/py-frameworks-bench/

Table of Contents#

Bug tracker#

Found a bug or have a feature request? Please open an issue at: klen/muffin#issues

Contributing#

Contributions are welcome! Please see [CONTRIBUTING.md](klen/muffin) for guidelines.

License#

Muffin is licensed under the MIT license.


Credits#

Muffin > 0.40 (completely rewritten on ASGI)

Muffin < 0.40 (based on AIOHTTP_)