forked from Mirrors/Dispatcharr
Rewored celery memory cleanup logic.
This commit is contained in:
parent
f821743163
commit
7c809931d7
4 changed files with 53 additions and 35 deletions
|
|
@ -53,19 +53,51 @@ app.conf.update(
|
|||
@task_postrun.connect # Use the imported signal
|
||||
def cleanup_task_memory(**kwargs):
|
||||
"""Clean up memory after each task completes"""
|
||||
import gc
|
||||
# Force garbage collection
|
||||
gc.collect()
|
||||
# Get task name from kwargs
|
||||
task_name = kwargs.get('task').name if kwargs.get('task') else ''
|
||||
|
||||
# Log memory usage if psutil is installed
|
||||
try:
|
||||
import psutil
|
||||
process = psutil.Process()
|
||||
if hasattr(process, 'memory_info'):
|
||||
mem = process.memory_info().rss / (1024 * 1024)
|
||||
print(f"Memory usage after task: {mem:.2f} MB")
|
||||
except (ImportError, Exception):
|
||||
pass
|
||||
# Only run cleanup for memory-intensive tasks
|
||||
memory_intensive_tasks = [
|
||||
'apps.m3u.tasks.refresh_single_m3u_account',
|
||||
'apps.m3u.tasks.refresh_m3u_accounts',
|
||||
'apps.m3u.tasks.process_m3u_batch',
|
||||
'apps.m3u.tasks.process_xc_category',
|
||||
'apps.epg.tasks.refresh_epg_data',
|
||||
'apps.epg.tasks.refresh_all_epg_data',
|
||||
'apps.epg.tasks.parse_programs_for_source',
|
||||
'apps.epg.tasks.parse_programs_for_tvg_id',
|
||||
'apps.channels.tasks.match_epg_channels',
|
||||
'core.tasks.rehash_streams'
|
||||
]
|
||||
|
||||
# Check if this is a memory-intensive task
|
||||
if task_name in memory_intensive_tasks:
|
||||
# Import cleanup_memory function
|
||||
from core.utils import cleanup_memory
|
||||
|
||||
# Use the comprehensive cleanup function
|
||||
cleanup_memory(log_usage=True, force_collection=True)
|
||||
|
||||
# Log memory usage if psutil is installed
|
||||
try:
|
||||
import psutil
|
||||
process = psutil.Process()
|
||||
if hasattr(process, 'memory_info'):
|
||||
mem = process.memory_info().rss / (1024 * 1024)
|
||||
print(f"Memory usage after {task_name}: {mem:.2f} MB")
|
||||
except (ImportError, Exception):
|
||||
pass
|
||||
else:
|
||||
# For non-intensive tasks, just log but don't force cleanup
|
||||
try:
|
||||
import psutil
|
||||
process = psutil.Process()
|
||||
if hasattr(process, 'memory_info'):
|
||||
mem = process.memory_info().rss / (1024 * 1024)
|
||||
if mem > 500: # Only log if using more than 500MB
|
||||
print(f"High memory usage detected in {task_name}: {mem:.2f} MB")
|
||||
except (ImportError, Exception):
|
||||
pass
|
||||
|
||||
@app.on_after_configure.connect
|
||||
def setup_celery_logging(**kwargs):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue