Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: enhance IP retrieval with caching #215

Merged
merged 1 commit into from
Oct 8, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
}
Loading