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:
@ -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
|
||||
|
Reference in New Issue
Block a user