From 51b0a571c0d66b2c3a390b3dc2f1b5457740d144 Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Fri, 20 Dec 2019 15:36:18 +0100 Subject: [PATCH] Fix #997: Added support for CELERYD_CONCURRENCY env var to control the number of worker processes --- changes/changelog.d/997.enhancement | 1 + deploy/docker-compose.yml | 2 +- deploy/env.prod.sample | 8 +++++++- deploy/funkwhale-worker.service | 11 ++--------- dev.yml | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) create mode 100644 changes/changelog.d/997.enhancement diff --git a/changes/changelog.d/997.enhancement b/changes/changelog.d/997.enhancement new file mode 100644 index 0000000000..2fdb7d78b7 --- /dev/null +++ b/changes/changelog.d/997.enhancement @@ -0,0 +1 @@ +Added support for CELERYD_CONCURRENCY env var to control the number of worker processes (#997) diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index bcf24422f9..f31115b5f1 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -36,7 +36,7 @@ services: # of CPUs. You can adjust this, by explicitly setting the --concurrency # flag: # celery -A funkwhale_api.taskapp worker -l INFO --concurrency=4 - command: celery -A funkwhale_api.taskapp worker -l INFO + command: celery -A funkwhale_api.taskapp worker -l INFO --concurrency=${CELERYD_CONCURRENCY-0} environment: - C_FORCE_ROOT=true volumes: diff --git a/deploy/env.prod.sample b/deploy/env.prod.sample index 672306a1ac..fc88505e49 100644 --- a/deploy/env.prod.sample +++ b/deploy/env.prod.sample @@ -86,6 +86,12 @@ REVERSE_PROXY_TYPE=nginx # For the Celery/asynchronous tasks part: # CELERY_BROKER_URL=redis+socket:///run/redis/redis.sock?virtual_host=0 +# Number of worker processes to execute. Defaults to 0, in which case it uses your number of CPUs +# Celery workers handle background tasks (such file imports or federation +# messaging). The more processes a worker gets, the more tasks +# can be processed in parallel. However, more processes also means +# a bigger memory footprint. +# CELERYD_CONCURRENCY=0 # Where media files (such as album covers or audio tracks) should be stored # on your system? @@ -175,4 +181,4 @@ AWS_STORAGE_BUCKET_NAME= # If you are using Amazon S3, use this setting to configure how long generated URLs should stay # valid. The default value is 3600 (60 minutes). The maximum accepted value is 604800 (7 days) -# AWS_QUERYSTRING_EXPIRE= \ No newline at end of file +# AWS_QUERYSTRING_EXPIRE= diff --git a/deploy/funkwhale-worker.service b/deploy/funkwhale-worker.service index 4df60b5e98..fbc2420819 100644 --- a/deploy/funkwhale-worker.service +++ b/deploy/funkwhale-worker.service @@ -8,15 +8,8 @@ User=funkwhale # adapt this depending on the path of your funkwhale installation WorkingDirectory=/srv/funkwhale/api EnvironmentFile=/srv/funkwhale/config/.env -# Celery workers handle background tasks (such file imports or federation -# messaging). The more processes a worker gets, the more tasks -# can be processed in parallel. However, more processes also means -# a bigger memory footprint. -# By default, a worker will span a number of process equal to your number -# of CPUs. You can adjust this, by explicitly setting the --concurrency -# flag: -# celery -A funkwhale_api.taskapp worker -l INFO --concurrency=4 -ExecStart=/srv/funkwhale/virtualenv/bin/celery -A funkwhale_api.taskapp worker -l INFO +ExecStart=/srv/funkwhale/virtualenv/bin/celery -A funkwhale_api.taskapp worker -l INFO --concurrency=${CELERYD_CONCURRENCY-0} + [Install] WantedBy=multi-user.target diff --git a/dev.yml b/dev.yml index c332f97c46..630ab68eca 100644 --- a/dev.yml +++ b/dev.yml @@ -86,7 +86,7 @@ services: - postgres # - minio - redis - command: celery -A funkwhale_api.taskapp worker -l debug -B + command: celery -A funkwhale_api.taskapp worker -l debug -B --concurrency=${CELERYD_CONCURRENCY-0} environment: - "FUNKWHALE_HOSTNAME=${FUNKWHALE_HOSTNAME-localhost}" - "FUNKWHALE_HOSTNAME_SUFFIX=funkwhale.test" -- GitLab