diff --git a/jntuhresults/Executables/notificationsretriever.py b/jntuhresults/Executables/notificationsretriever.py index 46ad13d5..77c239d8 100644 --- a/jntuhresults/Executables/notificationsretriever.py +++ b/jntuhresults/Executables/notificationsretriever.py @@ -6,11 +6,14 @@ import os from dotenv import load_dotenv + +load_dotenv() +redis_url=os.environ.get("REDIS_URL") +redis_client = redis.from_url(redis_url) + def get_notifications(): # Load environment variables from .env file - load_dotenv() - redis_url=os.environ.get("REDIS_URL") - redis_client = redis.from_url(redis_url) + redis_response = redis_client.get("notifications") if redis_response != None: data = json.loads(redis_response) diff --git a/jntuhresults/views.py b/jntuhresults/views.py index 6ab2b9b5..f7ea1e51 100644 --- a/jntuhresults/views.py +++ b/jntuhresults/views.py @@ -5,6 +5,16 @@ from jntuhresults.Executables.jntuhresultscraper import ResultScraper from django.views.generic import View from jntuhresults.Executables.notificationsretriever import get_notifications +import os +from dotenv import load_dotenv +import redis +import json +from datetime import timedelta + +# Load environment variables from .env file +load_dotenv() +redis_url=os.environ.get("REDIS_URL") +redis_client = redis.from_url(redis_url) # Class Result ---------------------------------------------------------------------- @@ -59,6 +69,11 @@ def get(self,request): if len(htno) != 10: return HttpResponse(htno+" Invalid hall ticket number") try: + redis_response = redis_client.get(htno) + if redis_response != None: + data = json.loads(redis_response) + print(htno,"- Retrived from cache") + return data["data"] # Create an instance of ResultScraper jntuhresult = ResultScraper(htno.upper()) @@ -86,6 +101,9 @@ def get(self,request): print(htno,result['Details']['NAME'],stopping-starting) del jntuhresult + + redis_client.set(htno, json.dumps({"data": result})) + redis_client.expire(htno, timedelta(minutes=45)) # Return the result return JsonResponse(result,safe=False) @@ -100,7 +118,10 @@ def get(self,request): #- Notifications ------------------------------------------------------------------------------------------------- class Notification(View): def get(self,request): - + redis_response = redis_client.get("notifications") + if redis_response != None: + data = json.loads(redis_response) + return JsonResponse(data["data"],safe=False) return JsonResponse(get_notifications(),safe=False) #---------------------------------------------------------------------------------------------------------------