Skip to main content

A Python ASGI web microframework with the same API as Flask

Project description

Quart logo

Build Status docs pypi http python license chat

Quart is a Python ASGI web microframework. It is intended to provide the easiest way to use asyncio functionality in a web context, especially with existing Flask apps. This is possible as the Quart API is a superset of the Flask API.

Quart aims to be a complete web microframework, as it supports HTTP/1.1, HTTP/2 and websockets. Quart is very extendable and has a number of known extensions and works with many of the Flask extensions.

Quickstart

Quart can be installed via pip,

$ pip install quart

and requires Python 3.7.0 or higher (see python version support for reasoning).

A minimal Quart example is,

from quart import Quart, websocket

app = Quart(__name__)

@app.route('/')
async def hello():
    return 'hello'

@app.websocket('/ws')
async def ws():
    while True:
        await websocket.send('hello')

app.run()

if the above is in a file called app.py it can be run as,

$ python app.py

Also see this cheatsheet.

To deploy in a production setting see the deployment documentation.

Features

Quart supports the full ASGI 3.0 specification as well as the websocket response and HTTP/2 server push extensions. For those of you familiar with Flask, Quart extends the Flask-API by adding support for,

  • HTTP/1.1 request streaming.

  • Websockets.

  • HTTP/2 server push.

Note that not all ASGI servers support these features, for this reason the recommended server is Hypercorn.

Contributing

Quart is developed on GitLab. 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.

Testing

The best way to test Quart is with Tox,

$ pip install tox
$ tox

this will check the code style and run the tests.

Help

The Quart documentation is the best place to start, after that try searching stack overflow, if you still can’t find an answer please open an issue.

API Compatibility with Flask

The Flask API can be described as consisting of the Flask public and private APIs and Werkzeug upon which Flask is based. Quart is designed to be fully compatible with the Flask public API (aside from async and await keywords). Thereafter the aim is to be mostly compatible with the Flask private API and to provide no guarantees about the Werkzeug API.

Migrating from Flask

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 full details.

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

Quart-0.13.0.tar.gz (113.5 kB view details)

Uploaded Source

Built Distribution

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

Quart-0.13.0-py3-none-any.whl (83.3 kB view details)

Uploaded Python 3

File details

Details for the file Quart-0.13.0.tar.gz.

File metadata

  • Download URL: Quart-0.13.0.tar.gz
  • Upload date:
  • Size: 113.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.44.0 CPython/3.8.2

File hashes

Hashes for Quart-0.13.0.tar.gz
Algorithm Hash digest
SHA256 b2a8cf0cf1b0129cd981ece9ae304ad977d1dcaec92952303bd1852508717d44
MD5 9cb4dadb1dafe5fa60b1c1a940d9e0fc
BLAKE2b-256 27a788463bc15293993044a1739b9e870560f8a62706f5afa6620c19601c9327

See more details on using hashes here.

File details

Details for the file Quart-0.13.0-py3-none-any.whl.

File metadata

  • Download URL: Quart-0.13.0-py3-none-any.whl
  • Upload date:
  • Size: 83.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.44.0 CPython/3.8.2

File hashes

Hashes for Quart-0.13.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b0b5148ab57b775ed173ed9e9897f3b13d2f54e39cfadf4a396f442ec96bb57f
MD5 2e7a3fd3eabc540d7d7c4e1eecc9b24a
BLAKE2b-256 c76a57f179a8c7ccb7017af3c76f7ec5ac32871a9fef27fb5447fc226b595aae

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