diff --git a/backend/server/adventures/apps.py b/backend/server/adventures/apps.py index 393e5ad..8fc4664 100644 --- a/backend/server/adventures/apps.py +++ b/backend/server/adventures/apps.py @@ -7,5 +7,6 @@ class AdventuresConfig(AppConfig): def ready(self): if settings.SCHEDULER_AUTOSTART: - from .scheduler import start_scheduler - start_scheduler() \ No newline at end of file + from django.core.management import call_command + import threading + threading.Thread(target=call_command, args=('start_scheduler',)).start() \ No newline at end of file diff --git a/backend/server/adventures/management/commands/start_scheduler.py b/backend/server/adventures/management/commands/start_scheduler.py new file mode 100644 index 0000000..95b9aa0 --- /dev/null +++ b/backend/server/adventures/management/commands/start_scheduler.py @@ -0,0 +1,30 @@ +from django.core.management.base import BaseCommand +from django.db import connections +from django.db.utils import OperationalError +import time +from adventures.scheduler import start_scheduler +import logging + +logger = logging.getLogger(__name__) + +class Command(BaseCommand): + help = 'Starts the APScheduler' + + def handle(self, *args, **options): + self.stdout.write('Waiting for database...') + db_conn = None + while not db_conn: + try: + db_conn = connections['default'] + except OperationalError: + self.stdout.write('Database unavailable, waiting 1 second...') + time.sleep(1) + + self.stdout.write(self.style.SUCCESS('Database available!')) + + start_scheduler() + self.stdout.write(self.style.SUCCESS('Scheduler started successfully')) + + # Keep the command running + while True: + time.sleep(60) \ No newline at end of file diff --git a/backend/server/adventures/scheduler.py b/backend/server/adventures/scheduler.py index 7795d49..2d1fcbd 100644 --- a/backend/server/adventures/scheduler.py +++ b/backend/server/adventures/scheduler.py @@ -46,12 +46,11 @@ def start_scheduler(): scheduler.add_job( run_worldtravel_seed, trigger="interval", - hours=24, + minutes=3, id="worldtravel_seed", max_instances=1, replace_existing=True, ) logger.info("Starting scheduler...") - scheduler.start() - return scheduler \ No newline at end of file + scheduler.start() \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 871e5d3..01555d2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -23,8 +23,8 @@ services: - postgres_data:/var/lib/postgresql/data/ server: - #build: ./backend/ - image: ghcr.io/seanmorley15/adventurelog-backend:latest + build: ./backend/ + #image: ghcr.io/seanmorley15/adventurelog-backend:latest environment: - PGHOST=db - PGDATABASE=database