diff --git a/api/poetry.lock b/api/poetry.lock index 79be4fe7b..bb093994f 100644 --- a/api/poetry.lock +++ b/api/poetry.lock @@ -824,6 +824,17 @@ gevent = ["gevent (>=1.4.0)"] setproctitle = ["setproctitle"] tornado = ["tornado (>=0.2)"] +[[package]] +name = "h11" +version = "0.13.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} + [[package]] name = "hiredis" version = "2.0.0" @@ -1811,6 +1822,23 @@ brotli = ["brotlipy (>=0.6.0)"] secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +[[package]] +name = "uvicorn" +version = "0.14.0" +description = "The lightning-fast ASGI server." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +asgiref = ">=3.3.4" +click = ">=7" +h11 = ">=0.8" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} + +[package.extras] +standard = ["websockets (>=9.1)", "httptools (>=0.2.0,<0.3.0)", "watchgod (>=0.6)", "python-dotenv (>=0.13)", "PyYAML (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "colorama (>=0.4)"] + [[package]] name = "vine" version = "5.0.0" @@ -1895,7 +1923,7 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] [metadata] lock-version = "1.1" python-versions = "^3.7" -content-hash = "522cae43525e9a65de8242b0d878770a7392e29af9f4f110749ffdd1671554b4" +content-hash = "1db45836e587380a3ae2f051856ae6fc82fc87d94e2fa8a0798d0c57833434fd" [metadata.files] aiohttp = [ @@ -2302,6 +2330,10 @@ gunicorn = [ {file = "gunicorn-20.1.0-py3-none-any.whl", hash = "sha256:9dcc4547dbb1cb284accfb15ab5667a0e5d1881cc443e0677b4882a4067a807e"}, {file = "gunicorn-20.1.0.tar.gz", hash = "sha256:e0a968b5ba15f8a328fdfd7ab1fcb5af4470c28aaf7e55df02a99bc13138e6e8"}, ] +h11 = [ + {file = "h11-0.13.0-py3-none-any.whl", hash = "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442"}, + {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, +] hiredis = [ {file = "hiredis-2.0.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b4c8b0bc5841e578d5fb32a16e0c305359b987b850a06964bd5a62739d688048"}, {file = "hiredis-2.0.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0adea425b764a08270820531ec2218d0508f8ae15a448568109ffcae050fee26"}, @@ -2931,6 +2963,10 @@ urllib3 = [ {file = "urllib3-1.26.7-py2.py3-none-any.whl", hash = "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"}, {file = "urllib3-1.26.7.tar.gz", hash = "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece"}, ] +uvicorn = [ + {file = "uvicorn-0.14.0-py3-none-any.whl", hash = "sha256:2a76bb359171a504b3d1c853409af3adbfa5cef374a4a59e5881945a97a93eae"}, + {file = "uvicorn-0.14.0.tar.gz", hash = "sha256:45ad7dfaaa7d55cab4cd1e85e03f27e9d60bc067ddc59db52a2b0aeca8870292"}, +] vine = [ {file = "vine-5.0.0-py2.py3-none-any.whl", hash = "sha256:4c9dceab6f76ed92105027c49c823800dd33cacce13bdedc5b914e3514b7fb30"}, {file = "vine-5.0.0.tar.gz", hash = "sha256:7d3b1624a953da82ef63462013bbd271d3eb75751489f9807598e8f340bd637e"}, diff --git a/api/pyproject.toml b/api/pyproject.toml index c2670f398..cab656b03 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -56,6 +56,7 @@ asgiref = "3.3.4" #1516 ipython = "~=7.27.0" python-ldap = "~=3.3.0" django-auth-ldap = "~=3.0.0" +uvicorn = "~=0.14.0" [tool.poetry.dev-dependencies] flake8 = "~=3.9.1" diff --git a/deploy/funkwhale-beat.service b/deploy/funkwhale-beat.service index 209896dd4..3fd851c9f 100644 --- a/deploy/funkwhale-beat.service +++ b/deploy/funkwhale-beat.service @@ -8,7 +8,7 @@ User=funkwhale # adapt this depending on the path of your funkwhale installation WorkingDirectory=/srv/funkwhale/api EnvironmentFile=/srv/funkwhale/config/.env -ExecStart=/srv/funkwhale/virtualenv/bin/celery -A funkwhale_api.taskapp beat -l INFO +ExecStart=/srv/funkwhale/.local/bin/poetry run celery -A funkwhale_api.taskapp beat -l INFO [Install] WantedBy=multi-user.target diff --git a/deploy/funkwhale-server.service b/deploy/funkwhale-server.service index b531e596e..a996cf75c 100644 --- a/deploy/funkwhale-server.service +++ b/deploy/funkwhale-server.service @@ -8,6 +8,6 @@ User=funkwhale # adapt this depending on the path of your funkwhale installation WorkingDirectory=/srv/funkwhale/api EnvironmentFile=/srv/funkwhale/config/.env -ExecStart=/srv/funkwhale/virtualenv/bin/gunicorn config.asgi:application -w ${FUNKWHALE_WEB_WORKERS} -k uvicorn.workers.UvicornWorker -b ${FUNKWHALE_API_IP}:${FUNKWHALE_API_PORT} +ExecStart=/srv/funkwhale/.local/bin/poetry run gunicorn config.asgi:application -w ${FUNKWHALE_WEB_WORKERS} -k uvicorn.workers.UvicornWorker -b ${FUNKWHALE_API_IP}:${FUNKWHALE_API_PORT} [Install] WantedBy=multi-user.target diff --git a/deploy/funkwhale-worker.service b/deploy/funkwhale-worker.service index 934263bd6..2eff9b9d6 100644 --- a/deploy/funkwhale-worker.service +++ b/deploy/funkwhale-worker.service @@ -9,7 +9,7 @@ User=funkwhale WorkingDirectory=/srv/funkwhale/api Environment="CELERYD_CONCURRENCY=0" EnvironmentFile=/srv/funkwhale/config/.env -ExecStart=/srv/funkwhale/virtualenv/bin/celery -A funkwhale_api.taskapp worker -l INFO --concurrency=${CELERYD_CONCURRENCY} +ExecStart=/srv/funkwhale/.local/bin/poetry run celery -A funkwhale_api.taskapp worker -l INFO --concurrency=${CELERYD_CONCURRENCY} [Install] diff --git a/api/requirements.apt b/deploy/requirements.apt similarity index 53% rename from api/requirements.apt rename to deploy/requirements.apt index 075b9ffdd..dac8938fa 100644 --- a/api/requirements.apt +++ b/deploy/requirements.apt @@ -9,3 +9,13 @@ python3-dev libldap2-dev libsasl2-dev make +unzip +zlib1g-dev +libffi-dev +libssl-dev +libxml2-dev +libxslt1-dev +libjpeg-dev +redis-server +python3-venv +git