fix: workers supervisés + tiles régénérées après ingestion et au démarrage

This commit is contained in:
Gwadaking
2026-04-14 00:31:46 -04:00
parent e0ed71535e
commit 96dc79a297
2 changed files with 46 additions and 7 deletions

View File

@@ -4,16 +4,33 @@ set -e
# Warmup du cache Symfony au démarrage (les vars d'env sont disponibles ici)
php bin/console cache:warmup --env=prod --no-debug 2>&1 || true
# Génère les tiles au démarrage depuis les données existantes en DB.
# Indispensable si le container redémarre sans que les tiles aient été régénérées
# par le pipeline d'ingestion (premier démarrage, redémarrage inattendu, etc.).
php bin/console app:generate-tiles --env=prod --no-debug 2>&1 | tee -a var/log/tiles.log || true
# Boucle de supervision : relance le worker automatiquement après --time-limit ou crash.
# Sans cette boucle, les workers s'arrêtent définitivement après 3600s (--time-limit)
# et plus aucune ingestion ni traitement de message n'a lieu.
_supervise() {
name="$1"; shift
while true; do
printf '[%s] Starting worker: %s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$name" >> "var/log/${name}.log"
"$@" >> "var/log/${name}.log" 2>&1 || true
printf '[%s] Worker %s stopped — restart in 5s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$name" >> "var/log/${name}.log"
sleep 5
done
}
# Worker scheduler — réveille le pipeline toutes les 6h
# --time-limit=3600 : redémarre le process toutes les heures (rotation naturelle + libération mémoire)
php bin/console messenger:consume scheduler_main \
--env=prod --no-debug --memory-limit=64M --time-limit=3600 \
2>&1 | tee -a var/log/scheduler.log &
_supervise scheduler \
php bin/console messenger:consume scheduler_main \
--env=prod --no-debug --memory-limit=64M --time-limit=3600 &
# Worker async — exécute les messages d'ingestion déclenchés par le scheduler
php bin/console messenger:consume async \
--env=prod --no-debug --memory-limit=256M --time-limit=3600 \
2>&1 | tee -a var/log/worker.log &
_supervise async \
php bin/console messenger:consume async \
--env=prod --no-debug --memory-limit=256M --time-limit=3600 &
# Lance FrankenPHP (comportement par défaut de l'image de base)
exec frankenphp run --config /etc/caddy/Caddyfile "$@"