50 lines
2.0 KiB
Python
50 lines
2.0 KiB
Python
"""
|
||
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}')
|