Aller au contenu

Exploitation

GET /health/ exécute SELECT 1 sur la base :

Réponse Signification
200 {"status": "ok"} Application et base disponibles
503 {"status": "error"} Base injoignable (détail dans les journaux)

Le contrôle répond avant la validation de l’hôte et la redirection HTTPS : il sert de sonde au HEALTHCHECK de l’image Docker, aux plateformes PaaS et aux services de surveillance.

Tout est écrit sur la sortie standard, au format date niveau logger message. Le niveau se règle avec LOG_LEVEL (INFO par défaut) ; les requêtes HTTP sortantes de httpx ne sont journalisées qu’à partir de WARNING.

Fenêtre de terminal
docker compose logs -f web # requêtes (journal d'accès Gunicorn) et erreurs
docker compose logs -f scheduler # synchronisation des prix et rappels

Messages utiles :

Message Origine
Synced <slug>: N records, M new pricing.sync, après chaque ingrédient
Open data request failed: <url> (...) integrations.http, après épuisement des tentatives
Health check failed core.views.health

Le chemin est défini par ADMIN_URL. On y gère ingrédients, recettes (avec recalcul des métriques à l’enregistrement), magasins, relevés de prix, utilisateurs, jetons d’API et adresses email.

Fenêtre de terminal
docker compose exec web python manage.py createsuperuser
docker compose exec web python manage.py changepassword admin@example.org
Symptôme Cause probable Solution
Bad Request (400) Domaine absent de ALLOWED_HOSTS Ajoutez le domaine, ou définissez DOMAIN avec docker-compose.prod.yml
CSRF verification failed à l’envoi d’un formulaire Origine absente de CSRF_TRUSTED_ORIGINS, ou proxy qui ne transmet pas X-Forwarded-Proto Ajoutez https://votre-domaine ; vérifiez la configuration du proxy
Boucle de redirections HTTPS Proxy qui termine TLS sans transmettre X-Forwarded-Proto Configurez le proxy, ou en dernier recours SECURE_SSL_REDIRECT=false derrière un proxy qui force HTTPS
Pages sans styles collectstatic non lancé ou static/css/app.css non compilé L’image Docker le fait ; en local, npm run build
Prix absents sync_prices jamais lancé ou ingrédients sans catégorie Lancez la commande et vérifiez off_category
CO2 vide sur les recettes Impact CO2 indisponible lors du calcul refresh_metrics
Erreur après une dizaine de secondes à l’inscription Serveur SMTP injoignable Voir Dépannage des emails
Image cassée ou bloquée Domaine absent de la CSP (console du navigateur) Pour un stockage S3, vérifiez AWS_S3_CUSTOM_DOMAIN ou AWS_S3_ENDPOINT_URL
Limitation de débit incohérente Cache local à chaque processus Configurez REDIS_URL

Pour diagnostiquer, docker compose exec web python manage.py shell donne accès aux modèles et aux services, et python manage.py check --deploy signale les réglages de sécurité manquants.