Hypercorn ========= .. image:: https://github.com/pgjones/hypercorn/raw/main/artwork/logo.png :alt: Hypercorn logo |Build Status| |docs| |pypi| |http| |python| |license| Hypercorn is an `ASGI `_ and WSGI web server based on the sans-io hyper, `h11 `_, `h2 `_, and `wsproto `_ libraries and inspired by Gunicorn. Hypercorn supports HTTP/1, HTTP/2, WebSockets (over HTTP/1 and HTTP/2), ASGI, and WSGI specifications. Hypercorn can utilise asyncio, uvloop, or trio worker types. Hypercorn can optionally serve the current draft of the HTTP/3 specification using the `aioquic `_ library. To enable this install the ``h3`` optional extra, ``pip install hypercorn[h3]`` and then choose a quic binding e.g. ``hypercorn --quic-bind localhost:4433 ...``. Hypercorn was initially part of `Quart `_ before being separated out into a standalone server. Hypercorn forked from version 0.5.0 of Quart. Quickstart ---------- Hypercorn can be installed via `pip `_, .. code-block:: console $ pip install hypercorn With hypercorn installed ASGI frameworks (or apps) can be served via Hypercorn via the command line, .. code-block:: console $ hypercorn module:app Alternatively Hypercorn can be used programatically, .. code-block:: python import asyncio from hypercorn.config import Config from hypercorn.asyncio import serve from module import app asyncio.run(serve(app, Config())) learn more (including a Trio example of the above) in the `API usage `_ docs. Contributing ------------ Hypercorn 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 `pull request `_. Testing ~~~~~~~ The best way to test Hypercorn is with `Tox `_, .. code-block:: console $ pipenv install tox $ tox this will check the code style and run the tests. Help ---- The Hypercorn `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 `_. .. |Build Status| image:: https://github.com/pgjones/hypercorn/actions/workflows/ci.yml/badge.svg :target: https://github.com/pgjones/hypercorn/commits/main .. |docs| image:: https://img.shields.io/badge/docs-passing-brightgreen.svg :target: https://hypercorn.readthedocs.io .. |pypi| image:: https://img.shields.io/pypi/v/hypercorn.svg :target: https://pypi.python.org/pypi/Hypercorn/ .. |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/hypercorn.svg :target: https://pypi.python.org/pypi/Hypercorn/ .. |license| image:: https://img.shields.io/badge/license-MIT-blue.svg :target: https://github.com/pgjones/hypercorn/blob/main/LICENSE