https://github.com/pallets/quart
  
  
    An async Python micro framework for building web applications.  
    https://github.com/pallets/quart
  
asgi asyncio http-server python quart
        Last synced: 6 months ago 
        JSON representation
    
An async Python micro framework for building web applications.
- Host: GitHub
- URL: https://github.com/pallets/quart
- Owner: pallets
- License: mit
- Created: 2017-11-10T20:10:33.000Z (almost 8 years ago)
- Default Branch: main
- Last Pushed: 2024-12-24T20:19:23.000Z (10 months ago)
- Last Synced: 2025-04-23T18:44:56.977Z (6 months ago)
- Topics: asgi, asyncio, http-server, python, quart
- Language: Python
- Homepage: https://quart.palletsprojects.com
- Size: 2.67 MB
- Stars: 3,265
- Watchers: 34
- Forks: 176
- Open Issues: 54
- 
            Metadata Files:
            - Readme: README.rst
- Changelog: CHANGES.rst
- Contributing: CONTRIBUTING.rst
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
 
Awesome Lists containing this project
- awesome-python-web-frameworks - Quart - Quart is an asyncio reimplementation of the popular Flask microframework API. This means that if you understand Flask you understand Quart. (Full-stack frameworks, but data-layer agnostic)
- awesome-asyncio - Quart - An asyncio web microframework with the same API as Flask. (Web Frameworks)
- StarryDivineSky - pallets/quart
- stars - pallets/quart - An async Python micro framework for building web applications. (Python)
- stars - pallets/quart - An async Python micro framework for building web applications. (Python)
README
          Quart
=====
.. image:: https://raw.githubusercontent.com/pallets/quart/main/artwork/logo.png
   :alt: Quart logo
|Build Status| |docs| |pypi| |python| |license| |chat|
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.
Quickstart
----------
Quart can be installed via `pip
`_,
.. code-block:: console
    $ pip install quart
and requires Python 3.9.0 or higher (see `python version support
`_
for reasoning).
A minimal Quart example is,
.. code-block:: python
    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,
.. code-block:: console
    $ python app.py
To deploy this app in a production setting see the `deployment
`_
documentation.
Contributing
------------
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
`_.
Testing
^^^^^^^
The best way to test Quart is with `Tox
`_,
.. code-block:: console
    $ pip install tox
    $ tox
this will check the code style and run the tests.
Help
----
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
`_.
Relationship with Flask
-----------------------
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.
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 more help.
.. |Build Status| image:: https://github.com/pallets/quart/actions/workflows/tests.yaml/badge.svg
   :target: https://github.com/pallets/quart/commits/main
.. |docs| image:: https://img.shields.io/badge/docs-passing-brightgreen.svg
   :target: https://quart.palletsprojects.com
.. |pypi| image:: https://img.shields.io/pypi/v/quart.svg
   :target: https://pypi.python.org/pypi/Quart/
.. |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://github.com/pallets/quart/blob/main/LICENSE
.. |chat| image:: https://img.shields.io/badge/chat-join_now-brightgreen.svg
   :target: https://discord.gg/pallets