Flask (Python)

Flask fonctionne sur Kavio sans aucune variable d'environnement à déclarer — c'est le framework le plus simple à déployer, à une condition près.

Le point à respecter : nom de fichier et nom de variable

Kavio détecte automatiquement une app Flask et la démarre tout seul, mais il s'attend à trouver :

  • un fichier appelé main.py à la racine du dépôt,
  • contenant une instance Flask appelée app :
from flask import Flask

app = Flask(__name__)

Avec un autre nom de fichier ou de variable, le démarrage automatique ne trouve rien à lancer. Si vous ne pouvez pas respecter cette convention (structure de projet différente, application factory…), utilisez la variable d'environnement RAILPACK_START_CMD pour préciser vous-même la commande, par exemple :

gunicorn --bind 0.0.0.0:${PORT:-8000} monmodule:mon_app

gunicorn doit aussi figurer dans requirements.txt — sans lui, Kavio ne démarre pas votre app avec un vrai serveur de production.

Le CSS/JS statique fonctionne sans rien faire

Contrairement à Django, Flask sert son dossier static/ nativement, sans étape de build à ajouter. Un simple {{ url_for('static', filename='style.css') }} dans vos templates suffit.

Une ligne à ignorer dans les logs

Vous verrez peut-être ceci au démarrage :

[ERROR] Control server error: [Errno 13] Permission denied: '/.gunicorn'

C'est sans conséquence — votre app démarre et répond normalement malgré cette ligne. Elle vient d'une fonctionnalité annexe du serveur (pilotage à chaud, non utilisée ici) qui tente d'écrire à un endroit réservé. Pour la faire disparaître, ajoutez --ctl-sock "" à la commande de démarrage (via RAILPACK_START_CMD) — mais ce n'est pas nécessaire.

Ce qui n'est pas nécessaire

Vous n'avez rien à faire concernant :

  • PORT — automatiquement imposé par la plateforme, votre app n'a pas à le déclarer ni à le lire.
  • Le disque applicatif — inscriptible sur Kavio, aucune redirection de fichiers à prévoir (utile si vous utilisez SQLite).