"Refactor database shm files for improved performance (feat)"

This commit is contained in:
Till Tomczak 2025-05-29 12:31:05 +02:00
parent 947afd14f7
commit ab4b625ba4
3 changed files with 70 additions and 1 deletions

View File

@ -23,13 +23,46 @@ from models import init_database, create_initial_admin, User, Printer, Job, Stat
from utils.logging_config import setup_logging, get_logger, measure_execution_time, log_startup_info, debug_request, debug_response
from utils.job_scheduler import JobScheduler, get_job_scheduler
from utils.queue_manager import start_queue_manager, stop_queue_manager, get_queue_manager
from config.settings import SECRET_KEY, UPLOAD_FOLDER, ALLOWED_EXTENSIONS, ENVIRONMENT, SESSION_LIFETIME
from config.settings import SECRET_KEY, UPLOAD_FOLDER, ALLOWED_EXTENSIONS, ENVIRONMENT, SESSION_LIFETIME, SCHEDULER_ENABLED, SCHEDULER_INTERVAL
# Blueprints importieren
from blueprints.guest import guest_blueprint
from blueprints.calendar import calendar_blueprint
from blueprints.users import users_blueprint
# Scheduler importieren falls verfügbar
try:
from utils.job_scheduler import scheduler
except ImportError:
scheduler = None
# SSL-Kontext importieren falls verfügbar
try:
from utils.ssl_config import get_ssl_context
except ImportError:
def get_ssl_context():
return None
# Template-Helfer importieren falls verfügbar
try:
from utils.template_helpers import register_template_helpers
except ImportError:
def register_template_helpers(app):
pass
# Datenbank-Monitor und Backup-Manager importieren falls verfügbar
try:
from utils.database_monitor import DatabaseMonitor
database_monitor = DatabaseMonitor()
except ImportError:
database_monitor = None
try:
from utils.backup_manager import BackupManager
backup_manager = BackupManager()
except ImportError:
backup_manager = None
# Flask-App initialisieren
app = Flask(__name__)
app.secret_key = SECRET_KEY
@ -2565,6 +2598,12 @@ def forbidden_error(error):
def get_database_stats():
"""Gibt Datenbank-Statistiken zurück."""
try:
if database_monitor is None:
return jsonify({
"success": False,
"error": "Database Monitor nicht verfügbar"
}), 503
stats = database_monitor.get_database_stats()
return jsonify({
"success": True,
@ -2582,6 +2621,12 @@ def get_database_stats():
def check_database_health():
"""Führt eine Datenbank-Gesundheitsprüfung durch."""
try:
if database_monitor is None:
return jsonify({
"success": False,
"error": "Database Monitor nicht verfügbar"
}), 503
health = database_monitor.check_database_health()
return jsonify({
"success": True,
@ -2599,6 +2644,12 @@ def check_database_health():
def optimize_database():
"""Führt Datenbank-Optimierung durch."""
try:
if database_monitor is None:
return jsonify({
"success": False,
"error": "Database Monitor nicht verfügbar"
}), 503
result = database_monitor.optimize_database()
return jsonify({
"success": result["success"],
@ -2616,6 +2667,12 @@ def optimize_database():
def create_database_backup():
"""Erstellt ein manuelles Datenbank-Backup."""
try:
if backup_manager is None:
return jsonify({
"success": False,
"error": "Backup Manager nicht verfügbar"
}), 503
data = request.get_json() or {}
compress = data.get('compress', True)
@ -2638,6 +2695,12 @@ def create_database_backup():
def list_database_backups():
"""Listet alle verfügbaren Datenbank-Backups auf."""
try:
if backup_manager is None:
return jsonify({
"success": False,
"error": "Backup Manager nicht verfügbar"
}), 503
backups = backup_manager.get_backup_list()
# Konvertiere datetime-Objekte zu Strings für JSON
@ -2660,6 +2723,12 @@ def list_database_backups():
def restore_database_backup():
"""Stellt ein Datenbank-Backup wieder her."""
try:
if backup_manager is None:
return jsonify({
"success": False,
"error": "Backup Manager nicht verfügbar"
}), 503
data = request.get_json()
if not data or 'backup_path' not in data:
return jsonify({

Binary file not shown.

Binary file not shown.