perf: Optimizar inicio de servicios para reducir consumo de RAM
- Inicio escalonado con delays: Panel Web → 5s → Telegram → 10s → Discord - Flags de Python para reducir footprint de memoria - Variables de entorno PYTHONDONTWRITEBYTECODE y PYTHONOPTIMIZE - Límites de memoria en docker-compose.yml
This commit is contained in:
@@ -14,6 +14,8 @@ COPY . .
|
||||
RUN mkdir -p /app/data
|
||||
|
||||
ENV PYTHONUNBUFFERED=1
|
||||
ENV PYTHONDONTWRITEBYTECODE=1
|
||||
ENV PYTHONOPTIMIZE=1
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
|
||||
@@ -23,5 +23,10 @@ services:
|
||||
- DB_USER=${DB_USER}
|
||||
- DB_PASSWORD=${DB_PASSWORD}
|
||||
- DB_NAME=${DB_NAME}
|
||||
- PYTHONDONTWRITEBYTECODE=1
|
||||
- PYTHONOPTIMIZE=1
|
||||
env_file:
|
||||
- .env
|
||||
mem_limit: 512m
|
||||
mem_reservation: 256m
|
||||
pids_limit: 50
|
||||
|
||||
@@ -3,6 +3,7 @@ import subprocess
|
||||
import sys
|
||||
import os
|
||||
import signal
|
||||
import time
|
||||
from datetime import datetime
|
||||
|
||||
LOG_DIR = "/app/data/logs"
|
||||
@@ -25,7 +26,11 @@ print("=" * 40)
|
||||
|
||||
processes = []
|
||||
|
||||
def start_process(cmd, name):
|
||||
def start_process(cmd, name, delay_before=0):
|
||||
if delay_before > 0:
|
||||
log(f"⏳ Esperando {delay_before}s antes de iniciar {name}...")
|
||||
time.sleep(delay_before)
|
||||
|
||||
log(f"✅ Iniciando {name}...")
|
||||
|
||||
log_path = f"{LOG_DIR}/{name.lower().replace(' ', '_')}.log"
|
||||
@@ -39,9 +44,9 @@ def start_process(cmd, name):
|
||||
processes.append((p, name))
|
||||
return p
|
||||
|
||||
p1 = start_process(["python3", "botdiscord/bot.py"], "Discord Bot")
|
||||
p2 = start_process(["python3", "bottelegram/telegram_bot.py"], "Telegram Bot")
|
||||
p3 = start_process(["python3", "panel/main.py"], "Panel Web")
|
||||
p1 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "botdiscord/bot.py"], "Discord Bot", delay_before=10)
|
||||
p2 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "bottelegram/telegram_bot.py"], "Telegram Bot", delay_before=5)
|
||||
p3 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "panel/main.py"], "Panel Web", delay_before=0)
|
||||
|
||||
print("=" * 40)
|
||||
print("🎉 Todos los servicios funcionando!")
|
||||
@@ -69,10 +74,9 @@ while True:
|
||||
if p.poll() is not None:
|
||||
log(f"⚠️ {name} se detuvo, reiniciando...")
|
||||
if name == "Discord Bot":
|
||||
p1 = start_process(["python3", "botdiscord/bot.py"], "Discord Bot")
|
||||
p1 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "botdiscord/bot.py"], "Discord Bot", delay_before=10)
|
||||
elif name == "Telegram Bot":
|
||||
p2 = start_process(["python3", "bottelegram/telegram_bot.py"], "Telegram Bot")
|
||||
p2 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "bottelegram/telegram_bot.py"], "Telegram Bot", delay_before=5)
|
||||
elif name == "Panel Web":
|
||||
p3 = start_process(["python3", "panel/main.py"], "Panel Web")
|
||||
import time
|
||||
p3 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "panel/main.py"], "Panel Web", delay_before=0)
|
||||
time.sleep(5)
|
||||
|
||||
Reference in New Issue
Block a user