Skip to main content

A Python asyncio web microframework with the same API as Flask

Project description

Quart
=====

.. image:: https://assets.gitlab-static.net/pgjones/quart/raw/master/artwork/logo.png
:alt: Quart logo

|Build Status| |docs| |pypi| |http| |python| |license|

Quart is a Python web microframework based on `Asyncio
<https://docs.python.org/3/library/asyncio.html>`_. It is intended to
provide the easiest way to use the asyncio functionality in a web
context, especially with existing Flask apps. This is possible as Quart
has the same API as `Flask <https://github.com/pallets/flask>`_.

Quart aims to be a complete web microframework, as it supports
HTTP/1.1, HTTP/2 and websockets. Quart also aims to be very extendable
and works with many of the `Flask extensions
<https://pgjones.gitlab.io/quart/flask_extensions.html>`_, (hopefully
Quart specific extensions will be written soon).

Quickstart
----------

Quart can be installed via `pip
<https://docs.python.org/3/installing/index.html>`_,

.. code-block:: console

$ pip install quart

and requires Python 3.6 or higher.

A minimal Quart example is,

.. code-block:: python

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,

.. code-block:: console

$ python app.py

To deploy in a production setting see the `docs
<https://pgjones.gitlab.io/quart/deployment.html>`_.

Features
--------

Quart has all the features required to serve webpages over HTTP. For
those of you familar with Flask, Quart extends the Flask-API by adding
support for,

- HTTP/1.1 chunked transfer-encoded requests and pipelining.
- Websockets.
- HTTP/2, including the ability to server push.

Contributing
------------

Quart is developed on GitLab, see `Quart
<https://gitlab.com/pgjones/quart>`_. You are very welcome to open
`issues <https://gitlab.com/pgjones/quart/issues>`_ or propose `merge
requests <https://gitlab.com/pgjones/quart/merge_requests>`_.

Testing
~~~~~~~

Tox is best used test Quart,

.. code-block:: console

$ pip install tox
$ tox

this will check the code style and run the tests.

Help
----

The Quart `documentation <https://pgjones.gitlab.io/quart/>`_ is the
best place to start, after that try opening an `issue
<https://gitlab.com/pgjones/quart/issues>`_.

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
<https://pgjones.gitlab.io/quart/flask_migration.html>`_ for full
details.


.. |Build Status| image:: https://gitlab.com/pgjones/quart/badges/master/build.svg
:target: https://gitlab.com/pgjones/quart/commits/master

.. |docs| image:: https://img.shields.io/badge/docs-passing-brightgreen.svg
:target: https://pgjones.gitlab.io/quart/

.. |pypi| image:: https://img.shields.io/pypi/v/quart.svg
:target: https://pypi.python.org/pypi/Quart/

.. |http| image:: https://img.shields.io/badge/http-1.0,1.1,2-orange.svg
:target: https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol

.. |python| image:: https://img.shields.io/pypi/pyversions/quart.svg
:target: https://pypi.python.org/pypi/Quart/

.. |license| image:: https://img.shields.io/badge/license-MIT-blue.svg
:target: https://gitlab.com/pgjones/quart/blob/master/LICENSE


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.4.1.tar.gz (86.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.4.1-py2.py3-none-any.whl (75.9 kB view details)

Uploaded Python 2Python 3

File details

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

File metadata

  • Download URL: Quart-0.4.1.tar.gz
  • Upload date:
  • Size: 86.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for Quart-0.4.1.tar.gz
Algorithm Hash digest
SHA256 c8f042607f3774a6afd482b01d4e9250817b1a79d098e3793d22a3caad123f6a
MD5 162513bf68cac1946b4bca81a15ab2fb
BLAKE2b-256 fc5bfc6b1fb3036249e6e073f8501fda2b106058eec29c91e4cf5a4e70a07d55

See more details on using hashes here.

File details

Details for the file Quart-0.4.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for Quart-0.4.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 0d901c559ad5f164ce1ac5f154af4dca8a43338d7f53bbc886d5d649933efca9
MD5 14dcf3fa7579ad5e4c8f0b8feca8b0b4
BLAKE2b-256 a477948cb0f26b0699913a3f0b0881b82bf222a6173e348a9e87e0ea330bafba

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