MCPcopy Create free account
hub / github.com/Dispatcharr/Dispatcharr / cleanup_memory

Function cleanup_memory

core/utils.py:568–609  ·  view source on GitHub ↗

Comprehensive memory cleanup function to reduce memory footprint Args: log_usage: Whether to log memory usage before and after cleanup force_collection: Whether to force garbage collection

(log_usage=False, force_collection=True)

Source from the content-addressed store, hash-verified

566
567
568def cleanup_memory(log_usage=False, force_collection=True):
569 """
570 Comprehensive memory cleanup function to reduce memory footprint
571
572 Args:
573 log_usage: Whether to log memory usage before and after cleanup
574 force_collection: Whether to force garbage collection
575 """
576 logger.trace("Starting memory cleanup django memory cleanup")
577 # Skip logging if log level is not set to debug or more verbose (like trace)
578 current_log_level = logger.getEffectiveLevel()
579 if not current_log_level <= logging.DEBUG:
580 log_usage = False
581 if log_usage:
582 try:
583 import psutil
584 process = psutil.Process()
585 before_mem = process.memory_info().rss / (1024 * 1024)
586 logger.debug(f"Memory before cleanup: {before_mem:.2f} MB")
587 except (ImportError, Exception) as e:
588 logger.debug(f"Error getting memory usage: {e}")
589
590 # Clear any object caches from Django ORM
591 from django.db import connection, reset_queries
592 reset_queries()
593
594 # Force garbage collection
595 if force_collection:
596 # Run full collection
597 gc.collect(generation=2)
598 # Clear cyclic references
599 gc.collect(generation=0)
600
601 if log_usage:
602 try:
603 import psutil
604 process = psutil.Process()
605 after_mem = process.memory_info().rss / (1024 * 1024)
606 logger.debug(f"Memory after cleanup: {after_mem:.2f} MB (change: {after_mem-before_mem:.2f} MB)")
607 except (ImportError, Exception):
608 pass
609 logger.trace("Memory cleanup complete for django")
610
611
612def spawn_memory_trim(close_connections=False):

Callers 8

match_epg_channelsFunction · 0.90
match_single_channel_epgFunction · 0.90
parse_channels_onlyFunction · 0.90
cleanup_task_memoryFunction · 0.90
_runFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected