Verified Commit 19652d6c authored by Kevin Morris's avatar Kevin Morris Committed by Eli Schwartz
Browse files

swap uvicorn out for hypercorn

uvicorn is subjectively nicer to play with for local dev work, but
hypercorn is required in order to do HTTP/2 which is fairly

Signed-off-by: Kevin Morris's avatarKevin Morris <>
Signed-off-by: Lukas Fleischer's avatarLukas Fleischer <>
Co-authored-by: Eli Schwartz's avatarEli Schwartz <>
Signed-off-by: Eli Schwartz's avatarEli Schwartz <>
parent bab74dd3
Pipeline #7172 passed with stage
in 1 minute and 3 seconds
......@@ -11,7 +11,7 @@ before_script:
base-devel git gpgme protobuf pyalpm python-mysql-connector
python-pygit2 python-srcinfo python-bleach python-markdown
python-sqlalchemy python-alembic python-pytest python-werkzeug
python-pytest-tap python-fastapi uvicorn nginx python-authlib
python-pytest-tap python-fastapi hypercorn nginx python-authlib
python-itsdangerous python-httpx
......@@ -48,7 +48,8 @@ read the instructions below.
4) Install Python modules and dependencies:
# pacman -S python-mysql-connector python-pygit2 python-srcinfo python-sqlalchemy \
python-bleach python-markdown python-alembic
python-bleach python-markdown python-alembic python-jinja \
python-itsdangerous python-authlib python-httpx hypercorn
# python3 install
5) Create a new MySQL database and a user and import the aurweb SQL schema:
......@@ -24,6 +24,7 @@ import aurweb.schema
children = []
temporary_dir = None
verbosity = 0
asgi_backend = ''
class ProcessExceptions(Exception):
......@@ -31,6 +32,7 @@ class ProcessExceptions(Exception):
Compound exception used by stop() to list all the errors that happened when
terminating child processes.
def __init__(self, message, exceptions):
self.message = message
self.exceptions = exceptions
......@@ -110,10 +112,11 @@ def start():
# FastAPI
host, port = aurweb.config.get("fastapi", "bind_address").rsplit(":", 1)
spawn_child(["python", "-m", "uvicorn",
"--host", host,
"--port", port,
if asgi_backend == "hypercorn":
portargs = ["-b", f"{host}:{port}"]
elif asgi_backend == "uvicorn":
portargs = ["--host", host, "--port", port]
spawn_child(["python", "-m", asgi_backend] + portargs + ["aurweb.asgi:app"])
# nginx
spawn_child(["nginx", "-p", temporary_dir, "-c", generate_nginx_config()])
......@@ -158,8 +161,11 @@ if __name__ == '__main__':
description='Start aurweb\'s test server.')
parser.add_argument('-v', '--verbose', action='count', default=0,
help='increase verbosity')
parser.add_argument('-b', '--backend', choices=['hypercorn', 'uvicorn'], default='hypercorn',
help='asgi backend used to launch the python server')
args = parser.parse_args()
verbosity = args.verbose
asgi_backend = args.backend
with tempfile.TemporaryDirectory(prefix="aurweb-") as tmpdirname:
temporary_dir = tmpdirname
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment