uchill/backend/apps/core/management/commands/clearcache.py

50 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
Management команда для очистки кэша Django.
"""
from django.core.management.base import BaseCommand
from django.core.cache import cache
from django.conf import settings
class Command(BaseCommand):
help = 'Очищает весь кэш Django'
def add_arguments(self, parser):
parser.add_argument(
'--pattern',
type=str,
help='Паттерн для очистки конкретных ключей (например, "mentor_dashboard_*")',
)
def handle(self, *args, **options):
pattern = options.get('pattern')
if pattern:
# Очистка по паттерну (только для Redis)
if hasattr(cache, 'delete_pattern'):
deleted = cache.delete_pattern(pattern)
self.stdout.write(
self.style.SUCCESS(
f'Удалено ключей по паттерну "{pattern}": {deleted}'
)
)
else:
self.stdout.write(
self.style.WARNING(
'Очистка по паттерну доступна только для Redis. '
'Используется полная очистка кэша.'
)
)
cache.clear()
self.stdout.write(self.style.SUCCESS('Кэш полностью очищен'))
else:
# Полная очистка кэша
cache.clear()
self.stdout.write(
self.style.SUCCESS('✓ Кэш Django успешно очищен')
)
# Показываем информацию о бэкенде кэша
cache_backend = settings.CACHES['default']['BACKEND']
self.stdout.write(f'Бэкенд кэша: {cache_backend}')