Quart is an async Python web microframework. Using Quart you can,
- render and serve HTML templates,
- write (RESTful) JSON APIs,
- serve WebSockets,
- stream request and response data,
- do pretty much anything over the HTTP or WebSocket protocols.
Quart can be installed via pip,
$ pip install quart
and requires Python 3.9.0 or higher (see python version support for reasoning).
A minimal Quart example is,
from quart import Quart, render_template, websocket
app = Quart(__name__)
@app.route("/")
async def hello():
return await render_template("index.html")
@app.route("/api")
async def json():
return {"hello": "world"}
@app.websocket("/ws")
async def ws():
while True:
await websocket.send("hello")
await websocket.send_json({"hello": "world"})
if __name__ == "__main__":
app.run()
if the above is in a file called app.py
it can be run as,
$ python app.py
To deploy this app in a production setting see the deployment documentation.
Quart is developed on GitHub. If you come across an issue, or have a feature request please open an issue. If you want to contribute a fix or the feature-implementation please do (typo fixes welcome), by proposing a merge request.
The best way to test Quart is with Tox,
$ pip install tox
$ tox
this will check the code style and run the tests.
The Quart documentation or cheatsheet are the best places to start, after that try searching stack overflow or ask for help on discord. If you still can't find an answer please open an issue.
Quart is an asyncio reimplementation of the popular Flask microframework API. This means that if you understand Flask you understand Quart.
Like Flask, Quart has an ecosystem of extensions for more specific needs. In addition a number of the Flask extensions work with Quart.
It should be possible to migrate to Quart from Flask by a find and
replace of flask
to quart
and then adding async
and
await
keywords. See the docs
for more help.