diff --git a/Dockerfile b/Dockerfile index 5047ed674..eb074eee7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -201,14 +201,7 @@ RUN --mount=type=cache,target=/root/.cache/pip \ USER ${UID}:${GID} WORKDIR /app -CMD ["/usr/local/bin/celery", "worker", \ - "--app=libretime_worker.tasks:worker", \ - "--config=libretime_worker.config", \ - "--beat", \ - "--time-limit=1800", \ - "--concurrency=1", \ - "--loglevel=info"] - +CMD ["/usr/local/bin/libretime-worker"] ARG LIBRETIME_VERSION ENV LIBRETIME_VERSION=$LIBRETIME_VERSION diff --git a/worker/install/systemd/libretime-worker.service b/worker/install/systemd/libretime-worker.service index 65c728d8c..0158d6c2f 100644 --- a/worker/install/systemd/libretime-worker.service +++ b/worker/install/systemd/libretime-worker.service @@ -22,14 +22,7 @@ Environment=LIBRETIME_CONFIG_FILEPATH=@@CONFIG_FILEPATH@@ Environment=LIBRETIME_LOG_FILEPATH=@@LOG_DIR@@/worker.log WorkingDirectory=@@WORKING_DIR@@/worker -ExecStart=/usr/bin/sh -c '@@VENV_DIR@@/bin/celery worker \ - --app=libretime_worker.tasks:worker \ - --config=libretime_worker.config \ - --beat \ - --time-limit=1800 \ - --concurrency=1 \ - --loglevel=INFO \ - --logfile=$LIBRETIME_LOG_FILEPATH' +ExecStart=/usr/local/bin/libretime-worker Restart=always User=libretime diff --git a/worker/libretime_worker/main.py b/worker/libretime_worker/main.py new file mode 100644 index 000000000..5a542f316 --- /dev/null +++ b/worker/libretime_worker/main.py @@ -0,0 +1,28 @@ +from pathlib import Path +from typing import Optional + +import click +from libretime_shared.cli import cli_logging_options +from libretime_shared.config import DEFAULT_ENV_PREFIX + +from .config import __name__ as config_module +from .tasks import worker + + +@click.command(context_settings={"auto_envvar_prefix": DEFAULT_ENV_PREFIX}) +@cli_logging_options() +def cli(log_level: str, log_filepath: Optional[Path]): + """ + Run celery. + """ + args = [ + f"--config={config_module}", + "--beat", + "--time-limit=1800", + "--concurrency=1", + f"--loglevel={log_level}", + ] + if log_filepath is not None: + args.append(f"--logfile={log_filepath}") + + worker.worker_main(args) diff --git a/worker/setup.py b/worker/setup.py index 0551c7627..c34aafc78 100644 --- a/worker/setup.py +++ b/worker/setup.py @@ -15,6 +15,11 @@ setup( }, license="MIT", packages=find_packages(exclude=["*tests*", "*fixtures*"]), + entry_points={ + "console_scripts": [ + "libretime-worker=libretime_worker.main:cli", + ] + }, python_requires=">=3.8", install_requires=[ "celery==4.4.7",