muistox/gallery/management/commands/list_sessions.py

33 lines
1.2 KiB
Python

import json
from django.conf import settings
from django.core.management.base import BaseCommand
from django_redis import get_redis_connection
class Command(BaseCommand):
help = "List active Django sessions from Redis"
def add_arguments(self, parser):
parser.add_argument('--details', action='store_true', help='Print session data')
def handle(self, *args, **options):
cache_prefix = getattr(settings, 'SESSION_CACHE_ALIAS', 'default')
redis_conn = get_redis_connection(cache_prefix)
# Redis-avaimet istuntoja varten (django-redis käyttää 'session:' prefixiä)
keys = redis_conn.keys('session:*')
count = len(keys)
self.stdout.write(f"Aktiivisia sessioita Redisissä: {count}")
if options['details'] and count > 0:
self.stdout.write("\nSession ID:t ja sisällöt:\n" + "-"*40)
for key in keys:
session_data = redis_conn.get(key)
try:
decoded = session_data.decode("utf-8")
except Exception:
decoded = str(session_data)
self.stdout.write(f"{key.decode('utf-8')}: {decoded}\n")