Skip to content

Commit

Permalink
feat: enhance IP retrieval with caching
Browse files Browse the repository at this point in the history
- Implemented caching for external IP retrieval in the misc function to reduce unnecessary requests and improve performance.
- Added error handling and logging for external IP retrieval failures.
  • Loading branch information
psyray committed Oct 8, 2024
1 parent 6d3a40c commit fc9221d
Showing 1 changed file with 20 additions and 2 deletions.
22 changes: 20 additions & 2 deletions web/reNgine/context_processors.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,29 @@
from . import settings
import requests
from django.core.cache import cache
import logging

logger = logging.getLogger(__name__)

def version(request):
return {"RENGINE_CURRENT_VERSION": settings.RENGINE_CURRENT_VERSION}

def misc(request):
externalIp = requests.get('https://checkip.amazonaws.com').text.strip()
# Attempt to retrieve the external IP address from the cache
external_ip = cache.get('external_ip')

if external_ip is None:
try:
# If the IP address is not in the cache, make the request
external_ip = requests.get('https://checkip.amazonaws.com').text.strip()
# Cache the IP address for 1 hour (3600 seconds)
cache.set('external_ip', external_ip, timeout=3600)
except requests.RequestException as e:
# Handle the exception if the request fails
external_ip = 'Unable to retrieve IP' # Default value in case of error
# You can also log the error if necessary
logger.error(f"Error retrieving external IP: {e}")

return {
'external_ip': externalIp
'external_ip': external_ip
}

0 comments on commit fc9221d

Please sign in to comment.