From 17cbfd71b4bfb155139ae5155a422819e0a1201e Mon Sep 17 00:00:00 2001 From: Patrick Jentsch Date: Wed, 22 Sep 2021 13:53:39 +0200 Subject: [PATCH] Rename TaskRunner to Daemon (because it essentially is one) and restructure cli --- app/cli.py | 25 ++++++++++++++++++------- app/daemon/__init__.py | 20 ++++++++++++++++++++ app/{tasks => daemon}/corpus_utils.py | 0 app/{tasks => daemon}/job_utils.py | 0 app/tasks/__init__.py | 14 -------------- boot.sh | 12 ++++++------ config.py | 2 ++ 7 files changed, 46 insertions(+), 27 deletions(-) create mode 100644 app/daemon/__init__.py rename app/{tasks => daemon}/corpus_utils.py (100%) rename app/{tasks => daemon}/job_utils.py (100%) delete mode 100644 app/tasks/__init__.py diff --git a/app/cli.py b/app/cli.py index 7c0782b2..50e017c9 100644 --- a/app/cli.py +++ b/app/cli.py @@ -11,15 +11,26 @@ def register(app): # create or update user roles Role.insert_roles() - @app.cli.command() - def tasks(): - from app.tasks import TaskRunner - task_runner = TaskRunner() - task_runner.run() + @app.cli.group() + def daemon(): + """Daemon commands.""" + pass - @app.cli.command() + @daemon.command() + def run(): + """Run daemon""" + from app.daemon import Daemon + daemon = Daemon() + daemon.run() + + @app.cli.group() def test(): - """Run the unit tests.""" + """Test commands.""" + pass + + @test.command() + def run(): + """Run unit tests.""" import unittest tests = unittest.TestLoader().discover('tests') unittest.TextTestRunner(verbosity=2).run(tests) diff --git a/app/daemon/__init__.py b/app/daemon/__init__.py new file mode 100644 index 00000000..461e0ca8 --- /dev/null +++ b/app/daemon/__init__.py @@ -0,0 +1,20 @@ +from app import db +from time import sleep +from .corpus_utils import CheckCorporaMixin +from .job_utils import CheckJobsMixin +import docker + + +class Daemon(CheckCorporaMixin, CheckJobsMixin): + def __init__(self): + self.docker = docker.from_env() + + def run(self): + while True: + try: + self.check_corpora() + self.check_jobs() + db.session.commit() + except: + pass + sleep(1.5) diff --git a/app/tasks/corpus_utils.py b/app/daemon/corpus_utils.py similarity index 100% rename from app/tasks/corpus_utils.py rename to app/daemon/corpus_utils.py diff --git a/app/tasks/job_utils.py b/app/daemon/job_utils.py similarity index 100% rename from app/tasks/job_utils.py rename to app/daemon/job_utils.py diff --git a/app/tasks/__init__.py b/app/tasks/__init__.py deleted file mode 100644 index 69096a7b..00000000 --- a/app/tasks/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -from .corpus_utils import CheckCorporaMixin -from .job_utils import CheckJobsMixin -from ..import db, socketio -import docker - - -class TaskRunner(CheckCorporaMixin, CheckJobsMixin): - def __init__(self): - self.docker = docker.from_env() - - def run(self): - self.check_corpora() - self.check_jobs() - db.session.commit() diff --git a/boot.sh b/boot.sh index bbca6652..579d0f06 100755 --- a/boot.sh +++ b/boot.sh @@ -1,19 +1,19 @@ #!/bin/bash source venv/bin/activate -if [[ "${NOPAQUE_DAEMON_ENABLED:-True}" == "True" ]]; then - echo "INFO Starting nopaque daemon process..." - ./nopaque-daemon.sh & -fi - if [[ "${#}" -eq 0 ]]; then while true; do + echo "INFO Run deployment tasks..." flask deploy if [[ "${?}" == "0" ]]; then break fi - echo "Deploy command failed, retrying in 5 secs..." + echo "WARNING ...Failed, retrying in 5 secs..." sleep 5 done + if [[ "${NOPAQUE_DAEMON_ENABLED:-True}" == "True" ]]; then + echo "INFO Start nopaque daemon..." + flask daemon run & + fi gunicorn \ --access-logfile - \ --error-logfile - \ diff --git a/config.py b/config.py index bdd94433..b922cd64 100644 --- a/config.py +++ b/config.py @@ -46,6 +46,8 @@ class Config: ''' # nopaque # ''' NOPAQUE_ADMIN = os.environ.get('NOPAQUE_ADMIN') NOPAQUE_CONTACT = os.environ.get('NOPAQUE_CONTACT') + NOPAQUE_DAEMON_ENABLED = \ + os.environ.get('NOPAQUE_DAEMON_ENABLED', 'true').lower() == 'true' NOPAQUE_DATA_DIR = os.environ.get('NOPAQUE_DATA_DIR', '/mnt/nopaque') NOPAQUE_MAIL_SUBJECT_PREFIX = '[nopaque]' NOPAQUE_SOCKETIO_MESSAGE_QUEUE_URI = \