Déployer une application Flask
Flask convient aux APIs et aux petites applications web qui doivent rester simples. Sur l'hébergement d'applications, l'essentiel est de lancer Flask sur le port fourni, sur 0.0.0.0, avec le mode debug désactivé. Le reste tient à la structure des routes et à la vérification après déploiement.
Application minimale
import os
from flask import Flask, jsonify
app = Flask(__name__)
@app.get("/")
def index():
return jsonify(service="exemple", status="ok")
@app.get("/health")
def health():
return jsonify(status="ok"), 200
if __name__ == "__main__":
app.run(host="0.0.0.0", port=int(os.environ.get("PORT", "8000")))requirements.txt :
Flask==3.0.3
gunicorn==22.0.0app.run() bloque et sert les requêtes. Sur la plateforme, le fichier principal est exécuté directement, donc le bloc __main__ est bien appelé.
Mode production
Ne laissez jamais debug=True sur un service accessible : le débogueur interactif permet l'exécution de code si l'accès n'est pas filtré. Flask affiche aussi un avertissement explicite lorsque le serveur de développement est utilisé en production.
Le serveur intégré convient à un faible trafic et au diagnostic : il reste utile pour valider une route, mais il ne doit pas devenir la cible d'un trafic soutenu. Pour une charge réelle, utilisez un serveur WSGI comme Gunicorn ou Waitress, si votre offre permet de modifier la commande de démarrage :
gunicorn --bind 0.0.0.0:$PORT --workers 2 main:appDeux workers suffisent souvent sur une offre à un vCPU ; chaque worker a sa propre mémoire. Ne multipliez pas les workers sans surveiller la RAM.
Routes et erreurs
- Une route
/healthrapide, sans dépendance lourde. - Des réponses JSON cohérentes, y compris pour les erreurs.
- Une validation des entrées avant la base.
- Une limite de taille (
MAX_CONTENT_LENGTH) si vous acceptez des fichiers. - Un gestionnaire d'erreurs qui journalise la pile côté serveur sans la renvoyer au client.
Les fichiers statiques volumineux et les téléversements doivent être limités ou délégués à un stockage adapté ; le conteneur n'est pas un CDN.
Vérifier
curl -i http://ADRESSE_FOURNIE:PORT/
curl -i http://ADRESSE_FOURNIE:PORT/healthAttendez 200 et un corps JSON. Provoquez une route inconnue : 404, pas une trace Flask. Si le service est « en ligne » mais renvoie une erreur de connexion, vérifiez l'hôte (0.0.0.0) et le port avant de suspecter le code.
Publicité
Cet article vous a-t-il aidé ?
À lire aussi
- Configurer une application PythonDéfinir main.py, les dépendances, le port et les variables d'une application Python.
- Déployer une API FastAPIDémarrer Uvicorn correctement, exposer une route de santé et maîtriser la documentation.
- Comprendre requirements.txtÉpingler les versions, installer avec pip et reproduire un environnement identique.