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#
ASGI compatible
Competitive performance ([Benchmarks](http://klen.github.io/py-frameworks-bench/))
Multiple response types: text, HTML, JSON, streams, files, SSE, WebSockets
First-class plugin system for templating, databases, auth, and more
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:
ASGI-Tools – ASGI toolkit
Modconfig – hierarchical configuration manager
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_)