Configurer une application Python
Sur l'hébergement d'applications, la plateforme attend un point d'entrée Python et une commande de démarrage. Par défaut, elle installe requirements.txt, puis exécute python main.py. Votre code doit donc démarrer sans argument, lire sa configuration dans l'environnement et rester actif : un script qui se termine après l'initialisation est considéré comme arrêté.
Point d'entrée
Placez main.py à la racine du projet, ou indiquez le bon chemin si votre fichier est dans src/. Le fichier doit lancer le serveur ou la boucle d'événements au niveau supérieur, ou dans un bloc if __name__ == "__main__":.
import os
from http.server import BaseHTTPRequestHandler, HTTPServer
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
body = b"ok"
self.send_response(200)
self.send_header("Content-Type", "text/plain")
self.send_header("Content-Length", str(len(body)))
self.end_headers()
self.wfile.write(body)
port = int(os.environ.get("PORT", "8000"))
HTTPServer(("0.0.0.0", port), Handler).serve_forever()serve_forever() maintient le processus actif. Un print suivi d'une sortie de script provoque un arrêt immédiat, puis un redémarrage en boucle.
Dépendances et version
Déclarez les paquets dans requirements.txt avec des versions précises. La plateforme propose Python 3.12, 3.11, 3.10 et 3.9 : une roue compilée pour 3.12 ne fonctionne pas sur 3.9, et inversement. Vérifiez la disponibilité des roues avant de choisir une version ancienne.
N'embarquez pas d'environnement virtuel dans l'archive : il contient des chemins absolus de votre machine. Laissez la plateforme installer les dépendances. Ajoutez PYTHONUNBUFFERED=1 dans les variables si vos print n'apparaissent pas immédiatement dans la console.
Port et exposition
Une application web lit PORT et écoute sur 0.0.0.0. Un bot Discord n'ouvre aucun port : il se connecte à la passerelle. Dans les deux cas, ne codez pas le port et ne supposez pas que localhost est joignable depuis l'extérieur.
Si l'initialisation est longue (migrations, chargement de modèle), commencez à écouter rapidement et déplacez le travail lourd après le démarrage, sinon la plateforme peut considérer le service comme indisponible.
Variables et fichiers
Les variables se configurent dans le panneau et sont injectées au démarrage. Un changement nécessite un redémarrage. Les fichiers écrits par l'application persistent dans le dossier du projet selon l'offre, mais ne remplacent pas une sauvegarde : exportez les données importantes.
N'écrivez pas dans les paquets installés ni dans le dossier de l'interpréteur. Utilisez un sous-dossier dédié (data/, uploads/) avec des permissions adaptées.
Vérifier
- Le journal d'installation ne contient pas d'erreur de dépendance.
- Le démarrage affiche le port ou votre message d'initialisation.
- Une requête sur
/ou/healthrépond. - Le service reste actif et la mémoire se stabilise.
- Après un renommage de fichier, la commande de démarrage pointe vers le bon chemin.
Si le service redémarre sans cesse, lisez la première exception : elle indique presque toujours un import manquant, un chemin incorrect ou une variable absente.
Publicité
Cet article vous a-t-il aidé ?
À lire aussi
- Comprendre requirements.txtÉpingler les versions, installer avec pip et reproduire un environnement identique.
- Déployer une application FlaskLancer Flask sur le port fourni, sans debug, avec une route de santé.
- Node.js ou Python pour votre projet ?Comparer les modèles d'exécution et les écosystèmes pour choisir un runtime utilement.