diff --git a/core/tasks.py b/core/tasks.py new file mode 100644 index 0000000..58bc15a --- /dev/null +++ b/core/tasks.py @@ -0,0 +1,17 @@ +from logging import getLogger +from huey import crontab +from huey.contrib.djhuey import periodic_task +from django.core.cache import cache +from django.conf import settings +from core.monero import AuctionDaemon, AuctionWallet + + +logger = getLogger('django.server') + +@periodic_task(crontab(minute='*')) +def retrieve_daemon_stats(): + logger.info('[INFO] Retrieving daemon statistics') + ad = AuctionDaemon() + if ad.connected: + daemon_info = ad.daemon.info() + cache.set('daemon_info', daemon_info, settings.CACHE_TTL) diff --git a/core/views.py b/core/views.py index 874ec80..ecfca8b 100644 --- a/core/views.py +++ b/core/views.py @@ -1,20 +1,22 @@ from django.shortcuts import render, HttpResponseRedirect, reverse from django.http import JsonResponse from django.contrib.auth.decorators import login_required -from django.contrib.auth.models import User from django.contrib import messages +from django.core.cache import cache from core.forms import UserShippingAddressForm from core.models import UserShippingAddress from core.monero import AuctionDaemon, AuctionWallet def home(request): - daemon = AuctionDaemon() + daemon_info = cache.get('daemon_info', None) - if daemon.connected: - daemon_info = daemon.daemon.info() - else: - daemon_info = False + if daemon_info is None: + d = AuctionDaemon() + if d.connected: + daemon_info = AuctionDaemon().daemon.info() + else: + daemon_info = False return render(request, 'home.html', {'daemon_info': daemon_info}) diff --git a/requirements.txt b/requirements.txt index 795060c..75e1067 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -Django==2.2.8 +Django>=2.2.9 Pillow==6.2.1 boto3==1.10.45 coverage==5.0.3 diff --git a/xmrauctions/settings.py b/xmrauctions/settings.py index afcce89..2db9b5c 100644 --- a/xmrauctions/settings.py +++ b/xmrauctions/settings.py @@ -102,6 +102,7 @@ DATABASES = { CACHE_HOST = os.environ.get('CACHE_HOST', 'localhost') CACHE_PORT = os.environ.get('CACHE_PORT', 6379) +CACHE_TTL = os.environ.get('CACHE_TTL', 3600) CACHES = { 'default': {