fix: trigger legacy tasks manager every 5m (#2987)

### Description

This ensures that when the LibreTime interface is not used for a long
time, we still have the task manager run essential tasks for the
schedule.

Related to #2670
This commit is contained in:
Jonas L 2024-04-13 19:12:45 +02:00 committed by GitHub
parent bcaa77ff3c
commit 7040d0e4bd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 31 additions and 0 deletions

View file

@ -9,7 +9,9 @@ from urllib.parse import urlsplit
import mutagen
import requests
from celery import Celery, signals
from celery.schedules import crontab
from celery.utils.log import get_task_logger
from libretime_api_client.v1 import ApiClient as LegacyClient
from mutagen import MutagenError
from requests import RequestException, Response
@ -19,6 +21,11 @@ from .config import config
worker = Celery()
logger = get_task_logger(__name__)
legacy_client = LegacyClient(
base_url=config.general.public_url,
api_key=config.general.api_key,
)
@signals.worker_init.connect
def init_sentry(**_kwargs):
@ -37,6 +44,22 @@ def init_sentry(**_kwargs):
)
worker.conf.beat_schedule = {
"legacy-trigger-task-manager": {
"task": "libretime_worker.tasks.legacy_trigger_task_manager",
"schedule": crontab(minute="*/5"),
},
}
@worker.task()
def legacy_trigger_task_manager():
"""
Trigger the legacy task manager to perform background tasks.
"""
legacy_client.trigger_task_manager()
@worker.task(name="podcast-download", acks_late=True)
def podcast_download(
episode_id: int,