Clean up logging

This commit is contained in:
Jeremy Stretch 2020-03-13 11:55:06 -04:00
parent f6dfd2fa43
commit e2123f4a9e
3 changed files with 16 additions and 11 deletions

View File

@ -1,7 +1,7 @@
from collections import OrderedDict
from django.conf import settings
from django.db.models import Count, F, OuterRef, Subquery
from django.db.models import Count, F
from django.shortcuts import render
from django.views.generic import View
from packaging import version

View File

@ -7,7 +7,7 @@ from django_rq import job
from packaging import version
# Get an instance of a logger
logger = logging.getLogger(__name__)
logger = logging.getLogger('netbox.releases')
@job
@ -27,25 +27,27 @@ def get_releases(pre_releases=False):
releases = []
# noinspection PyBroadException
try:
logger.debug("Fetching new releases from {}".format(url))
response = requests.get(url, headers=headers)
response.raise_for_status()
total_releases = len(response.json())
for release in response.json():
if 'tag_name' not in release:
continue
if not pre_releases and (release.get('devrelease') or release.get('prerelease')):
continue
releases.append((version.parse(release['tag_name']), release.get('html_url')))
logger.debug("Found {} releases; {} usable".format(total_releases, len(releases)))
except Exception:
# Don't retry this URL for 15 minutes
cache.set('netbox_releases_no_retry', url, 900)
logger.exception("Error while fetching {}".format(url))
cache.set('netbox_releases_no_retry', url, 900)
return []
# Cache the releases list
cache.set('netbox_releases', releases, settings.UPDATE_CACHE_TIMEOUT)
return releases

View File

@ -5,20 +5,23 @@ from django.conf import settings
from utilities.background_tasks import get_releases
# Get an instance of a logger
logger = logging.getLogger(__name__)
logger = logging.getLogger('netbox.releases')
def get_latest_release(pre_releases=False):
if settings.UPDATE_REPO_URL:
logger.debug("Checking for most recent release")
try:
releases = cache.get('netbox_releases')
if releases:
logger.debug("Found {} cached releases. Latest: {}".format(len(releases), max(releases)))
return max(releases)
except CacheMiss:
logger.debug("Starting background task to get releases")
# 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")
return 'unknown', None