From 35e32c996cfa34ec4eaf2aa5ebabf1531df9f10c Mon Sep 17 00:00:00 2001 From: stepan323446 Date: Fri, 28 Nov 2025 12:05:05 +0100 Subject: [PATCH] Fixed create api to save data --- weather/utils.py | 2 ++ weather/views.py | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/weather/utils.py b/weather/utils.py index 35d5a67..afa32a7 100644 --- a/weather/utils.py +++ b/weather/utils.py @@ -82,4 +82,6 @@ def get_weather_api_data(): responses = openmeteo.weather_api(url, params=params) response = responses[0] + days = response.Daily() + return response \ No newline at end of file diff --git a/weather/views.py b/weather/views.py index 6d1ccf3..b0aae60 100644 --- a/weather/views.py +++ b/weather/views.py @@ -1,3 +1,4 @@ +import time from django.core.cache import cache from rest_framework.generics import CreateAPIView, ListAPIView from rest_framework.views import APIView @@ -10,6 +11,7 @@ from .models import WeatherStats from .serializers import WeatherStatSerializer from .utils import IsMikrokontroller, PageNumberPagination +CACHE_SAVE_CONTROL = 'stats_latest_saved_control' CACHE_KEY_STATS = 'stats_latest_data' CACHE_KEY_WEATHER = 'weather_latest_data' CACHE_TIMEOUT = 30 # 30 seconds @@ -34,10 +36,12 @@ class CreateStatAPI(CreateAPIView): def perform_create(self, serializer: WeatherStatSerializer): new_data = serializer.validated_data - cached_data = cache.get(CACHE_KEY_STATS) + last_saved = cache.get(CACHE_SAVE_CONTROL) + current_time = time.time() - if cached_data is None: + if last_saved is None or (current_time - last_saved) >= CACHE_TIMEOUT: serializer.save() + cache.set(CACHE_SAVE_CONTROL, current_time, CACHE_TIMEOUT) cache.set(CACHE_KEY_STATS, new_data, CACHE_TIMEOUT)