1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Move request to background task

This commit is contained in:
Sander Steffann
2020-02-27 19:36:02 +01:00
parent 22ac9f63a1
commit 8ce106cb4b
2 changed files with 55 additions and 26 deletions

View File

@ -1,35 +1,24 @@
import requests
from cacheops import cached
import logging
from cacheops import CacheMiss, cache
from django.conf import settings
from packaging import version
from utilities.background_tasks import get_releases
@cached(timeout=settings.UPDATE_CACHE_TIMEOUT, extra=settings.UPDATE_REPO_URL)
def get_releases(pre_releases=False):
url = '{}/releases'.format(settings.UPDATE_REPO_URL)
headers = {
'Accept': 'application/vnd.github.v3+json',
}
try:
response = requests.get(url, headers=headers)
releases = [(version.parse(release['tag_name']), release.get('html_url'))
for release in response.json()
if 'tag_name' in release]
except Exception:
releases = []
if not pre_releases:
releases = [(release, url)
for release, url in releases
if not release.is_devrelease and not release.is_prerelease]
return releases
# Get an instance of a logger
logger = logging.getLogger(__name__)
def get_latest_release(pre_releases=False):
if settings.UPDATE_REPO_URL:
releases = get_releases(pre_releases)
if releases:
return max(releases)
try:
releases = cache.get('netbox_releases')
if 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
get_releases.delay(pre_releases=pre_releases)
return 'unknown', None