From a37183f57e882d3f8475b4400e6f7f12462a6adc Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Tue, 17 Apr 2018 21:26:28 +0200 Subject: [PATCH] Additional celery beat systemd unit file --- api/config/settings/common.py | 12 ++++++++++++ deploy/funkwhale-beat.service | 14 ++++++++++++++ deploy/funkwhale.target | 2 +- docs/installation/systemd.rst | 2 ++ 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 deploy/funkwhale-beat.service diff --git a/api/config/settings/common.py b/api/config/settings/common.py index ebfd21dd6..a972ec7ef 100644 --- a/api/config/settings/common.py +++ b/api/config/settings/common.py @@ -13,6 +13,8 @@ from __future__ import absolute_import, unicode_literals from urllib.parse import urlsplit import os import environ +from celery.schedules import crontab + from funkwhale_api import __version__ ROOT_DIR = environ.Path(__file__) - 3 # (/a/b/myfile.py - 3 = /) @@ -334,6 +336,16 @@ CELERY_BROKER_URL = env( # Your common stuff: Below this line define 3rd party library settings CELERY_TASK_DEFAULT_RATE_LIMIT = 1 CELERY_TASK_TIME_LIMIT = 300 +CELERYBEAT_SCHEDULE = { + 'federation.clean_music_cache': { + 'task': 'funkwhale_api.federation.tasks.clean_music_cache', + 'schedule': crontab(hour='*/2'), + 'options': { + 'expires': 60 * 2, + }, + } +} + import datetime JWT_AUTH = { 'JWT_ALLOW_REFRESH': True, diff --git a/deploy/funkwhale-beat.service b/deploy/funkwhale-beat.service new file mode 100644 index 000000000..209896dd4 --- /dev/null +++ b/deploy/funkwhale-beat.service @@ -0,0 +1,14 @@ +[Unit] +Description=Funkwhale celery beat process +After=redis.service postgresql.service +PartOf=funkwhale.target + +[Service] +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 + +[Install] +WantedBy=multi-user.target diff --git a/deploy/funkwhale.target b/deploy/funkwhale.target index a920c7e34..a09e381c4 100644 --- a/deploy/funkwhale.target +++ b/deploy/funkwhale.target @@ -1,3 +1,3 @@ [Unit] Description=Funkwhale -Wants=funkwhale-server.service funkwhale-worker.service +Wants=funkwhale-server.service funkwhale-worker.service funkwhale-beat.service diff --git a/docs/installation/systemd.rst b/docs/installation/systemd.rst index 67af98432..27781c447 100644 --- a/docs/installation/systemd.rst +++ b/docs/installation/systemd.rst @@ -13,11 +13,13 @@ First, download the sample unitfiles: curl -L -o "/etc/systemd/system/funkwhale.target" "https://code.eliotberriot.com/funkwhale/funkwhale/raw/|version|/deploy/funkwhale.target" curl -L -o "/etc/systemd/system/funkwhale-server.service" "https://code.eliotberriot.com/funkwhale/funkwhale/raw/|version|/deploy/funkwhale-server.service" curl -L -o "/etc/systemd/system/funkwhale-worker.service" "https://code.eliotberriot.com/funkwhale/funkwhale/raw/|version|/deploy/funkwhale-worker.service" + curl -L -o "/etc/systemd/system/funkwhale-beat.service" "https://code.eliotberriot.com/funkwhale/funkwhale/raw/|version|/deploy/funkwhale-beat.service" This will download three unitfiles: - ``funkwhale-server.service`` to launch the funkwhale web server - ``funkwhale-worker.service`` to launch the funkwhale task worker +- ``funkwhale-beat.service`` to launch the funkwhale task beat (this is for recurring tasks) - ``funkwhale.target`` to easily stop and start all of the services at once You can of course review and edit them to suit your deployment scenario