From 77738d12efffd0907a5db51caf4da29041f2ab63 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 17 Mar 2020 11:37:35 -0400 Subject: [PATCH] Check for an existing job before queuing a new one --- netbox/utilities/releases.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/netbox/utilities/releases.py b/netbox/utilities/releases.py index f557cc433..6ce5b9ed0 100644 --- a/netbox/utilities/releases.py +++ b/netbox/utilities/releases.py @@ -2,6 +2,7 @@ import logging from cacheops import CacheMiss, cache from django.conf import settings +from django_rq import get_queue 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))) return max(releases) except CacheMiss: - # 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) + # Check for an existing job. This can happen if the RQ worker process is not running. + queue = get_queue('check_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: logger.debug("Skipping release check; UPDATE_REPO_URL not defined")