Framework Francfort, Allemagne

Déployez FastAPI sur Nodion

Nodion reconnaît FastAPI ou Starlette dans vos dépendances, les installe avec son buildpack Python et démarre Uvicorn sur votre main.py ou app.py. Les migrations peuvent s'exécuter comme étape de release avant la mise en production de chaque nouvelle version, et l'API tourne à Francfort, à côté d'une base de données PostgreSQL managée si vous en avez besoin.

Déployer sur Nodion ›

à partir de 1 EUR / mois

Jusqu'à 15 € de crédit de bienvenue à l'inscription

Détecté par
FastAPI ou Starlette dans vos dépendances
Démarrage
uvicorn main:app, un processus
Python
de 3.10 à 3.15, 3.13 par défaut
Région
EU Central (Francfort)

Déployez FastAPI étape par étape

  1. Installez FastAPI avec Uvicorn Nodion démarre Uvicorn mais ne l'installe pas. fastapi[standard] l'inclut ; avec fastapi seul, ajoutez uvicorn vous-même. Fixez la version de Python dans .python-version, car une plage sélectionne la version la plus récente. requirements.txt
    fastapi[standard]
  2. Placez l'app dans main.py ou app.py Nodion prend celui des fichiers main.py et app.py qui contient FastAPI ou Starlette et exécute uvicorn main:app ou uvicorn app:app sur 0.0.0.0 et le PORT qu'il définit. Répondez à / avec un code 200 : c'est le chemin par défaut du health check. main.py
    from fastapi import FastAPI
    
    app = FastAPI()
    
    
    @app.get("/")
    def root():
        return {"status": "ok"}
  3. Structure en package ? Ajoutez une ligne web Si votre app se trouve dans un package comme app/main.py, il n'y a aucun fichier à la racine à trouver. Indiquez vous-même le module dans un Procfile ; cette ligne remplace la commande de démarrage par défaut. Procfile
    web: uvicorn app.main:app --host 0.0.0.0 --port $PORT
  4. Exécutez les migrations à chaque déploiement Avec Alembic, une ligne release: s'exécute une fois par build, après le build et avant le démarrage de la nouvelle version. Si elle échoue, le déploiement s'arrête et la version en cours reste en ligne. Procfile
    release: alembic upgrade head
  5. Créez l'app et la base de données Créez une application depuis votre dépôt dans la région EU Central, puis une base de données PostgreSQL dans la même région, et rattachez-la dans l'onglet Environment : elle arrive sous la forme DATABASE_URL au déploiement suivant. Marquez les clés d'API comme secrètes, puis faites un push.

Bon à savoir

  • TrustedHostMiddlewareLe health check de Nodion appelle chaque instance par son adresse interne, qui ne figure pas dans allowed_hosts : le middleware répond 400 et la release n'est jamais mise en ligne. Ajoutez après lui une fonction @app.middleware("http") qui renvoie 200 pour /healthz (Starlette exécute en premier le middleware ajouté en dernier), et indiquez /healthz comme chemin du health check dans les paramètres de l'app.
  • Plus d'un workerPar défaut, un seul processus Uvicorn tourne. Pour en avoir plus, définissez web: uvicorn main:app --host 0.0.0.0 --port $PORT --workers 2 dans un Procfile, ou lancez davantage d'instances du processus web.
  • DATABASE_URL et SQLAlchemyLa DATABASE_URL de Nodion commence par postgres://, que SQLAlchemy 1.4 et les versions suivantes n'acceptent pas. Remplacez le schéma avant de la transmettre, par exemple par postgresql+psycopg:// pour psycopg 3, qui fonctionne avec les moteurs synchrones comme asynchrones.

Ce que Nodion gère pour vous

  • Déploiements sans interruption Faites un push sur votre branche : Nodion construit une nouvelle release. Le trafic bascule lorsque les nouvelles instances réussissent leur health check ; si la release échoue, celle en cours reste active. Les apps avec un volume local redémarrent, car le disque appartient à une seule instance.
  • Bases de données à côté de l'app PostgreSQL, pgvector, MySQL, Valkey et ClickHouse managés, dans la même région. Les bases de données rattachées arrivent sous forme de DATABASE_URL, REDIS_URL ou CLICKHOUSE_URL.
  • Previews par pull request Activez les previews, et les pull requests de votre dépôt obtiennent leur propre app, avec sa propre URL et des bases de données neuves et vides, créées automatiquement ou à la main. Les pull requests issues de forks ou de bots sont ignorées.
  • Workers, cron jobs et mise à l'échelle Exécutez les workers comme processus supplémentaires de la même app, planifiez des tâches dans l'onglet Cron et mettez chaque processus à l'échelle jusqu'à 16 instances.
  • Étape de release Avec les buildpacks, une ligne release: du Procfile s'exécute à chaque nouveau build. Les apps Dockerfile, ainsi que les redéploiements ou les rollbacks vers une image antérieure, utilisent une commande de release définie sur l'app elle-même, qui prime aussi sur la ligne du Procfile. Sur les sites statiques, l'étape de release s'exécute dans une image qui ne contient que les fichiers générés par le build.
  • Logs et métriques Logs de build, de release et d'exécution, ainsi que les métriques CPU, mémoire, disque et réseau de chaque instance, dans le dashboard.
  • Domaines et HTTPS Un nom d'hôte par défaut avec HTTPS dès le premier déploiement, et des certificats automatiques pour vos propres domaines.

Pour aller plus loin

FastAPI sur Nodion : questions et réponses

Nodion exécute-t-il FastAPI avec plusieurs workers ?

Pas par défaut : Nodion démarre un seul processus Uvicorn. Ajoutez --workers 2 ou plus à votre propre ligne web:, ou augmentez le nombre d'instances du processus web.

Pourquoi mon déploiement FastAPI n'est-il jamais prêt ?

Le health check attend un 2xx ou un 3xx sur /. Une API sans route racine répond 404, et TrustedHostMiddleware répond 400 à l'adresse interne. Ajoutez une route, ou indiquez un chemin comme /healthz dans les paramètres de l'app et répondez-y avant la vérification de l'hôte.

Les apps Starlette fonctionnent-elles aussi ?

Oui. Avec Starlette dans vos dépendances, vous obtenez la même commande par défaut avec Uvicorn, qui cherche app dans main.py ou app.py.

Où tourne mon app FastAPI ?

Dans la région EU Central, à Francfort (Allemagne). Le build, le registry, l'app et ses bases de données, volumes, buckets, logs et métriques restent dans cette région. L'API et le plan de contrôle de Nodion sont hébergés en Allemagne. Nodion GmbH a son siège à Stuttgart.

Puis-je utiliser FastAPI en conformité avec le RGPD ?

Nodion en pose les bases : Nodion GmbH a son siège à Stuttgart (Allemagne). Dans la région de Francfort, l'app, ses bases de données et ses volumes fonctionnent en Allemagne. Vous concluez le DPA (accord de traitement des données, art. 28 RGPD) par voie électronique dans le dashboard. La conformité de votre déploiement dépend aussi de la façon dont vous configurez et utilisez l'app.

Combien coûte l'hébergement FastAPI sur Nodion ?

Une instance d'app coûte à partir de 1 EUR par mois. La configuration présentée dans l'encadré des coûts revient à 3.50 EUR par mois : App 2 EUR, PostgreSQL 1.50 EUR. Les prix sont HT, avec une facturation à la seconde. Vous pouvez choisir des tailles plus grandes ou davantage d'instances dès que vous en avez besoin.

Puis-je utiliser mon propre domaine pour mon app FastAPI ?

Oui. Chaque app reçoit un nom d'hôte par défaut avec HTTPS. Ajoutez votre propre domaine dans l'onglet Domains de l'app. Le certificat TLS est émis et renouvelé automatiquement.

Offrez un cloud à votre agent.

Jusqu'à 15 € de crédit de bienvenue à l'inscription.

Continuer avec GitHub

ou par e-mail

Restez informé.

Les nouveautés du produit, sans spam. Désabonnez-vous à tout moment.