diff --git a/backend/server/adventures/scheduler.py b/backend/server/adventures/scheduler.py index fc087a4..7795d49 100644 --- a/backend/server/adventures/scheduler.py +++ b/backend/server/adventures/scheduler.py @@ -1,11 +1,12 @@ -# scheduler.py - import logging from apscheduler.schedulers.background import BackgroundScheduler from django_apscheduler.jobstores import DjangoJobStore from django_apscheduler import util from django.conf import settings from django.core.management import call_command +from django.db import connections +from django.db.utils import OperationalError +import time logger = logging.getLogger(__name__) @@ -17,11 +18,31 @@ def run_worldtravel_seed(): except Exception as e: logger.error(f"Error in worldtravel-seed job: {str(e)}") +def database_ready(): + db_conn = connections['default'] + try: + db_conn.cursor() + except OperationalError: + return False + else: + return True + @util.close_old_connections def start_scheduler(): scheduler = BackgroundScheduler(timezone=settings.TIME_ZONE) scheduler.add_jobstore(DjangoJobStore(), "default") + # Wait for the database to be ready + retry_count = 0 + max_retries = 2 # Set to 2 attempts + while not database_ready(): + if retry_count >= max_retries: + logger.error("Database not available after 2 attempts. Scheduler not started.") + return None + logger.info("Database not ready. Waiting before retry...") + time.sleep(2) # Wait for 2 seconds before retrying + retry_count += 1 + scheduler.add_job( run_worldtravel_seed, trigger="interval",