Check for an existing job before queuing a new one

This commit is contained in:
Jeremy Stretch 2020-03-17 11:37:35 -04:00
parent ec2dc8d7a4
commit ab93606e4a

View File

@ -2,6 +2,7 @@ import logging
from cacheops import CacheMiss, cache from cacheops import CacheMiss, cache
from django.conf import settings from django.conf import settings
from django_rq import get_queue
from utilities.background_tasks import get_releases from utilities.background_tasks import get_releases
@ -17,9 +18,14 @@ def get_latest_release(pre_releases=False):
logger.debug("Found {} cached releases. Latest: {}".format(len(releases), max(releases))) logger.debug("Found {} cached releases. Latest: {}".format(len(releases), max(releases)))
return max(releases) return max(releases)
except CacheMiss: except CacheMiss:
# Get the releases in the background worker, it will fill the cache # Check for an existing job. This can happen if the RQ worker process is not running.
logger.debug("Initiating background task to retrieve updated releases list") queue = get_queue('check_releases')
get_releases.delay(pre_releases=pre_releases) if queue.jobs:
logger.debug("Job to check for new releases is already queued; skipping")
else:
# Get the releases in the background worker, it will fill the cache
logger.debug("Initiating background task to retrieve updated releases list")
get_releases.delay(pre_releases=pre_releases)
else: else:
logger.debug("Skipping release check; UPDATE_REPO_URL not defined") logger.debug("Skipping release check; UPDATE_REPO_URL not defined")