switch back to wsgi, remove uvicorn

This commit is contained in:
meeb 2020-12-03 03:04:00 +11:00
parent af1b7a71d9
commit 85844549df
6 changed files with 18 additions and 73 deletions

View File

@ -47,7 +47,7 @@ ENV UID="${default_uid}"
ENV GID="${default_gid}" ENV GID="${default_gid}"
RUN set -x && \ RUN set -x && \
# Install required distro packages # Install required distro packages
apt-get -y --no-install-recommends install python3 python3-setuptools python3-pip python3-dev gcc make && \ apt-get -y --no-install-recommends install python3 python3-setuptools python3-pip python3-dev gcc make psmisc procps && \
# Install wheel which is required for pipenv # Install wheel which is required for pipenv
pip3 --disable-pip-version-check install wheel && \ pip3 --disable-pip-version-check install wheel && \
# Then install pipenv # Then install pipenv
@ -56,7 +56,7 @@ RUN set -x && \
groupadd -g ${GID} www && \ groupadd -g ${GID} www && \
useradd -M -d /app -s /bin/false -u ${UID} -g www www && \ useradd -M -d /app -s /bin/false -u ${UID} -g www www && \
# Install non-distro packages # Install non-distro packages
pipenv install --system && \ pipenv install --system --verbose && \
# Make absolutely sure we didn't accidentally bundle a SQLite dev database # Make absolutely sure we didn't accidentally bundle a SQLite dev database
rm -rf /app/db.sqlite3 && \ rm -rf /app/db.sqlite3 && \
# Create config, downloads and run dirs we can write to # Create config, downloads and run dirs we can write to
@ -98,7 +98,7 @@ RUN set -x && \
HEALTHCHECK --interval=1m --timeout=10s CMD /app/healthcheck.py http://127.0.0.1:8080/healthcheck HEALTHCHECK --interval=1m --timeout=10s CMD /app/healthcheck.py http://127.0.0.1:8080/healthcheck
# Drop to the www user # Drop to the www user
USER www #USER www
# ENVS and ports # ENVS and ports
ENV PYTHONPATH "/app:${PYTHONPATH}" ENV PYTHONPATH "/app:${PYTHONPATH}"
@ -108,4 +108,4 @@ EXPOSE 8080
ENTRYPOINT ["/app/entrypoint.sh"] ENTRYPOINT ["/app/entrypoint.sh"]
# Run gunicorn # Run gunicorn
CMD ["/usr/local/bin/gunicorn", "-c", "/app/tubesync/gunicorn.py", "-k", "uvicorn.workers.UvicornWorker", "--capture-output", "tubesync.asgi:application"] CMD ["/usr/local/bin/gunicorn", "-c", "/app/tubesync/gunicorn.py", "--capture-output", "tubesync.wsgi:application"]

View File

@ -16,9 +16,6 @@ django-compressor = "*"
httptools = "*" httptools = "*"
youtube-dl = "*" youtube-dl = "*"
django-background-tasks = "*" django-background-tasks = "*"
uvicorn = "*"
uvloop = "*"
django-simple-task = "*"
[requires] [requires]
python_version = "3" python_version = "3"

68
Pipfile.lock generated
View File

@ -1,7 +1,7 @@
{ {
"_meta": { "_meta": {
"hash": { "hash": {
"sha256": "83399df34fe306ade38c4e516198bfd67d88e57de8e5366a9038c5eb1ca86036" "sha256": "229a3783dcfd9d030ac58856ecb5d52d806db6acfa40eb6346eb6b58d79e91ab"
}, },
"pipfile-spec": 6, "pipfile-spec": 6,
"requires": { "requires": {
@ -23,20 +23,13 @@
], ],
"version": "==3.3.1" "version": "==3.3.1"
}, },
"click": {
"hashes": [
"sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a",
"sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"
],
"version": "==7.1.2"
},
"django": { "django": {
"hashes": [ "hashes": [
"sha256:14a4b7cd77297fba516fc0d92444cc2e2e388aa9de32d7a68d4a83d58f5a4927", "sha256:5c866205f15e7a7123f1eec6ab939d22d5bde1416635cab259684af66d8e48a2",
"sha256:14b87775ffedab2ef6299b73343d1b4b41e5d4e2aa58c6581f114dbec01e3f8f" "sha256:edb10b5c45e7e9c0fb1dc00b76ec7449aca258a39ffd613dbd078c51d19c9f03"
], ],
"index": "pypi", "index": "pypi",
"version": "==3.1.3" "version": "==3.1.4"
}, },
"django-appconf": { "django-appconf": {
"hashes": [ "hashes": [
@ -73,14 +66,6 @@
"index": "pypi", "index": "pypi",
"version": "==0.8.2" "version": "==0.8.2"
}, },
"django-simple-task": {
"hashes": [
"sha256:c70c5fd1db9ba58026ea3a00831c2c1a4d335f29c106321bb2dce643b7a71319",
"sha256:fe6494f5297711f5ec767835163dad3e4f6b751aa8857f0c338e5271a0721a4f"
],
"index": "pypi",
"version": "==0.1.2"
},
"gunicorn": { "gunicorn": {
"hashes": [ "hashes": [
"sha256:1904bb2b8a43658807108d59c3f3d56c2b6121a701161de0ddf9ad140073c626", "sha256:1904bb2b8a43658807108d59c3f3d56c2b6121a701161de0ddf9ad140073c626",
@ -89,13 +74,6 @@
"index": "pypi", "index": "pypi",
"version": "==20.0.4" "version": "==20.0.4"
}, },
"h11": {
"hashes": [
"sha256:3c6c61d69c6f13d41f1b80ab0322f1872702a3ba26e12aa864c928f6a43fbaab",
"sha256:ab6c335e1b6ef34b205d5ca3e228c9299cc7218b049819ec84a388c2525e5d87"
],
"version": "==0.11.0"
},
"httptools": { "httptools": {
"hashes": [ "hashes": [
"sha256:0a4b1b2012b28e68306575ad14ad5e9120b34fccd02a81eb08838d7e3bbb48be", "sha256:0a4b1b2012b28e68306575ad14ad5e9120b34fccd02a81eb08838d7e3bbb48be",
@ -212,38 +190,6 @@
], ],
"version": "==0.4.1" "version": "==0.4.1"
}, },
"typing-extensions": {
"hashes": [
"sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918",
"sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c",
"sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f"
],
"markers": "python_version < '3.8'",
"version": "==3.7.4.3"
},
"uvicorn": {
"hashes": [
"sha256:562ef6aaa8fa723ab6b82cf9e67a774088179d0ec57cb17e447b15d58b603bcf",
"sha256:5836edaf4d278fe67ba0298c0537bdb6398cf359eb644f79e6500ca1aad232b3"
],
"index": "pypi",
"version": "==0.12.3"
},
"uvloop": {
"hashes": [
"sha256:08b109f0213af392150e2fe6f81d33261bb5ce968a288eb698aad4f46eb711bd",
"sha256:123ac9c0c7dd71464f58f1b4ee0bbd81285d96cdda8bc3519281b8973e3a461e",
"sha256:4315d2ec3ca393dd5bc0b0089d23101276778c304d42faff5dc4579cb6caef09",
"sha256:4544dcf77d74f3a84f03dd6278174575c44c67d7165d4c42c71db3fdc3860726",
"sha256:afd5513c0ae414ec71d24f6f123614a80f3d27ca655a4fcf6cabe50994cc1891",
"sha256:b4f591aa4b3fa7f32fb51e2ee9fea1b495eb75b0b3c8d0ca52514ad675ae63f7",
"sha256:bcac356d62edd330080aed082e78d4b580ff260a677508718f88016333e2c9c5",
"sha256:e7514d7a48c063226b7d06617cbb12a14278d4323a065a8d46a7962686ce2e95",
"sha256:f07909cd9fc08c52d294b1570bba92186181ca01fe3dc9ffba68955273dd7362"
],
"index": "pypi",
"version": "==0.14.0"
},
"whitenoise": { "whitenoise": {
"hashes": [ "hashes": [
"sha256:05ce0be39ad85740a78750c86a93485c40f08ad8c62a6006de0233765996e5c7", "sha256:05ce0be39ad85740a78750c86a93485c40f08ad8c62a6006de0233765996e5c7",
@ -254,11 +200,11 @@
}, },
"youtube-dl": { "youtube-dl": {
"hashes": [ "hashes": [
"sha256:3d52d2c969ec9521a086c43f809fd7545708b7ba24d7379fb123b5438ba691e1", "sha256:bc82acb0b59b25b822fad85bef0cbe78e5754ca532e3bd6899fe06386e2b8e7c",
"sha256:be0b605c65adbcda2844806359478fe88101def37c994f19c52fad45232af7cc" "sha256:daa514c0d36af478fe249ea93ca63ae3aaa60ac5f82aa3d5514bce9ba7ed8451"
], ],
"index": "pypi", "index": "pypi",
"version": "==2020.11.26" "version": "==2020.12.2"
} }
}, },
"develop": {} "develop": {}

View File

@ -1,7 +1,6 @@
import os import os
from django.core.asgi import get_asgi_application from django.core.asgi import get_asgi_application
from django_simple_task import django_simple_task_middlware
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tubesync.settings') os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tubesync.settings')
application = django_simple_task_middlware(get_asgi_application()) application = get_asgi_application()

View File

@ -5,7 +5,7 @@ import multiprocessing
def get_num_workers(): def get_num_workers():
cpu_workers = multiprocessing.cpu_count() * 2 + 1 cpu_workers = multiprocessing.cpu_count() * 2 + 1
try: try:
num_workers = int(os.getenv('GUNICORN_WORKERS', 1)) num_workers = int(os.getenv('GUNICORN_WORKERS', 2))
except ValueError: except ValueError:
num_workers = cpu_workers num_workers = cpu_workers
if 0 > num_workers > cpu_workers: if 0 > num_workers > cpu_workers:

View File

@ -18,7 +18,6 @@ INSTALLED_APPS = [
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'sass_processor', 'sass_processor',
'django_simple_task',
'background_task', 'background_task',
'common', 'common',
'sync', 'sync',
@ -114,7 +113,11 @@ HEALTHCHECK_FIREWALL = True
HEALTHCHECK_ALLOWED_IPS = ('127.0.0.1',) HEALTHCHECK_ALLOWED_IPS = ('127.0.0.1',)
DJANGO_SIMPLE_TASK_WORKERS = 2 MAX_ATTEMPTS = 10 # Number of times tasks will be retried
MAX_RUN_TIME = 1800 # Maximum amount of time in seconds a task can run
BACKGROUND_TASK_RUN_ASYNC = True # Run tasks async in the background
BACKGROUND_TASK_ASYNC_THREADS = 2 # Number of async tasks to run at once
BACKGROUND_TASK_PRIORITY_ORDERING = 'DESC' # Process high priority tasks first
SOURCES_PER_PAGE = 25 SOURCES_PER_PAGE = 25