Добавил кеш к lyngsat

This commit is contained in:
2025-11-11 21:43:59 +03:00
parent 4f21c9d7c8
commit a3c381b9c7
15 changed files with 1282 additions and 229 deletions

View File

@@ -1047,6 +1047,8 @@ class FillLyngsatDataView(LoginRequiredMixin, FormMessageMixin, FormView):
def form_valid(self, form):
satellites = form.cleaned_data["satellites"]
regions = form.cleaned_data["regions"]
use_cache = form.cleaned_data.get("use_cache", True)
force_refresh = form.cleaned_data.get("force_refresh", False)
# Получаем названия спутников
target_sats = [sat.name for sat in satellites]
@@ -1054,12 +1056,19 @@ class FillLyngsatDataView(LoginRequiredMixin, FormMessageMixin, FormView):
try:
from lyngsatapp.tasks import fill_lyngsat_data_task
# Запускаем асинхронную задачу
task = fill_lyngsat_data_task.delay(target_sats, regions)
# Запускаем асинхронную задачу с параметрами кеширования
task = fill_lyngsat_data_task.delay(
target_sats,
regions,
force_refresh=force_refresh,
use_cache=use_cache
)
cache_status = "без кеша" if not use_cache else ("с обновлением кеша" if force_refresh else "с кешированием")
messages.success(
self.request,
f"Задача запущена! ID задачи: {task.id}. "
f"Задача запущена ({cache_status})! ID задачи: {task.id}. "
"Вы будете перенаправлены на страницу отслеживания прогресса."
)
@@ -1124,3 +1133,30 @@ class LyngsatTaskStatusAPIView(LoginRequiredMixin, View):
response_data['status'] = task.state
return JsonResponse(response_data)
class ClearLyngsatCacheView(LoginRequiredMixin, View):
"""
Представление для очистки кеша LyngSat.
"""
def post(self, request):
from lyngsatapp.tasks import clear_cache_task
cache_type = request.POST.get('cache_type', 'all')
try:
# Запускаем задачу очистки кеша
task = clear_cache_task.delay(cache_type)
messages.success(
request,
f"Задача очистки кеша ({cache_type}) запущена! ID задачи: {task.id}"
)
except Exception as e:
messages.error(request, f"Ошибка при запуске задачи очистки кеша: {str(e)}")
return redirect(request.META.get('HTTP_REFERER', 'mainapp:home'))
def get(self, request):
"""Страница управления кешем"""
return render(request, 'mainapp/clear_lyngsat_cache.html')