1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-07-22 14:29:36 +02:00

Fix scheduler

This commit is contained in:
Sean Morley 2024-08-21 10:05:09 -04:00
parent 4241a1024e
commit 256efc6304

View file

@ -1,11 +1,12 @@
# scheduler.py
import logging import logging
from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore from django_apscheduler.jobstores import DjangoJobStore
from django_apscheduler import util from django_apscheduler import util
from django.conf import settings from django.conf import settings
from django.core.management import call_command from django.core.management import call_command
from django.db import connections
from django.db.utils import OperationalError
import time
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -17,11 +18,31 @@ def run_worldtravel_seed():
except Exception as e: except Exception as e:
logger.error(f"Error in worldtravel-seed job: {str(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 @util.close_old_connections
def start_scheduler(): def start_scheduler():
scheduler = BackgroundScheduler(timezone=settings.TIME_ZONE) scheduler = BackgroundScheduler(timezone=settings.TIME_ZONE)
scheduler.add_jobstore(DjangoJobStore(), "default") 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( scheduler.add_job(
run_worldtravel_seed, run_worldtravel_seed,
trigger="interval", trigger="interval",