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
performance-important.
Signed-off-by: Kevin Morris's avatarKevin Morris <kevr@0cost.org>
Signed-off-by: Lukas Fleischer's avatarLukas Fleischer <lfleischer@archlinux.org>
Co-authored-by: Eli Schwartz's avatarEli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Eli Schwartz's avatarEli Schwartz <eschwartz@archlinux.org>
parent bab74dd3
......@@ -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
test:
......
......@@ -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 setup.py 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,
"aurweb.asgi:app"])
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
start()
......
Markdown is supported
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