Nouveau : Datasets open source gratuits disponibles !Decouvrir →
🐍
Intermediaire 20 min FastAPI

Deployer FastAPI sur Heroku

Pourquoi Déployer FastAPI sur Heroku ?

Le déploiement d'application FastAPI sur Heroku est un choix populaire pour les développeurs car il permet une mise en production rapide et facile, avec des fonctionnalités telles que l'échelle automatique, la sauvegarde régulière des données et le support du système d'exploitation Linux. Un cas concret serait l'application de gestion de tâches ou un API de blog qui nécessite une haute disponibilité et une scalabilité.

Prerequis

Avant de commencer ce tutoriel, vous devriez disposer des connaissances suivantes :

  • Connaissance approfondie de FastAPI
  • Familiarité avec Python 3.7+
  • Connaissances en gestion de paquets (pip)
  • Une compte Heroku active

Vous aurez également besoin d'installer les outils suivants :

  • Git (version 2.18+)
  • Python 3.7+
  • pip
  • Heroku CLI

Concepts fondamentaux

Schema mental : FastAPI sur Heroku

Le processus de déploiement FastAPI sur Heroku implique plusieurs étapes clés :

  1. Création du projet : Initialisation du projet avec FastAPI.
  2. Configuration de l'environnement : Création d'un fichier requirements.txt pour gérer les dépendances Python.
  3. Création du fichier startup : Configuration de l'application pour qu'elle puisse démarrer correctement sur Heroku.
  4. Initialisation du dépôt Git : Préparation du projet pour le déploiement via Git.
  5. Déploiement via la ligne de commande : Utilisation de l'interface CLI Heroku pour déployer l'application.

Exemple de Code

## main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Bienvenue sur mon API FastAPI"}

Mise en pratique : Projet fil rouge

Nous allons construire un mini-projet complet : un simple gestionnaire de tâches. Ce projet comprendra des routes pour ajouter, récupérer et supprimer des tâches.

Étape 1 : Initialiser le projet

mkdir todo-fastapi-heroku
cd todo-fastapi-heroku

Étape 2 : Créer le fichier requirements.txt

pip install fastapi uvicorn
echo "fastapi" >> requirements.txt
echo "uvicorn[standard]" >> requirements.txt

Étape 3 : Créer la structure du projet

mkdir app
touch app/main.py

Étape 4 : Ajouter le code de l'application

app/main.py

from fastapi import FastAPI, HTTPException
from typing import List, Optional
from pydantic import BaseModel

app = FastAPI()

## Mock data for tasks
tasks = []

class Task(BaseModel):
    id: int
    title: str
    completed: bool = False

@app.post("/tasks/", response_model=Task)
def create_task(task: Task):
    task.id = len(tasks) + 1
    tasks.append(task)
    return task

@app.get("/tasks/", response_model=List[Task])
def read_tasks():
    return tasks

@app.get("/tasks/{task_id}", response_model=Task)
def read_task(task_id: int):
    for task in tasks:
        if task.id == task_id:
            return task
    raise HTTPException(status_code=404, detail="Task not found")

@app.put("/tasks/{task_id}", response_model=Task)
def update_task(task_id: int, completed: Optional[bool] = None):
    for i, task in enumerate(tasks):
        if task.id == task_id:
            if completed is not None:
                tasks[i].completed = completed
            return tasks[i]
    raise HTTPException(status_code=404, detail="Task not found")

@app.delete("/tasks/{task_id}", response_model=Task)
def delete_task(task_id: int):
    for i, task in enumerate(tasks):
        if task.id == task_id:
            deleted_task = tasks.pop(i)
            return deleted_task
    raise HTTPException(status_code=404, detail="Task not found")

Étape 5 : Créer le fichier Procfile

Heroku utilise un fichier Procfile pour spécifier les commandes nécessaires pour démarrer votre application.

echo "web: uvicorn app.main:app --host=0.0.0.0 --port=$PORT" > Procfile

Étape 6 : Initialiser le dépôt Git

git init
git add .
git commit -m "Initial commit"

Erreurs fréquentes et debugging

  1. Erreur : Le service n'est pas disponible

Code incorrect

## app/main.py
from fastapi import FastAPI, HTTPException

app = FastAPI()

@app.get("/")
def read_root():
    raise Exception("Une erreur s'est produite")

Code correct

## app/main.py
from fastapi import FastAPI, HTTPException

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Bienvenue sur mon API FastAPI"}
  1. Erreur : Le service ne répond pas

Code incorrect

## Procfile
web: uvicorn app.main:app --host=0.0.0.0 --port=$PORT

Code correct

## Procfile
web: uvicorn app.main:app --host=0.0.0.0 --port=$PORT
  1. Erreur : Le service ne démarre pas

Code incorrect

## main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Bienvenue sur mon API FastAPI"}

Code correct

## main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Bienvenue sur mon API FastAPI"}

Pour aller plus loin

  1. Intégration avec une base de données : Utilisez SQLAlchemy pour gérer des tâches en base de données.
  2. Ajout d'authentification : Utilisez OAuth2 pour sécuriser votre API.
  3. Déploiement continu (CI/CD) : Configurez GitHub Actions pour automatiser le déploiement sur Heroku.

Défi pratique

  1. Créer une application de gestion de contacts : Implémentez des routes pour ajouter, récupérer et supprimer des contacts avec des informations comme le nom, l'email et le numéro de téléphone.

Besoin d'aide sur FastAPI ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Questions frequentes

Quel est le pré-requis pour déployer FastAPI sur Heroku ?
Pour déployer FastAPI sur Heroku, vous avez besoin d'un compte Heroku et de l'outil `Heroku CLI` installé sur votre machine. Assurez-vous également que Python est installé (FastAPI nécessite Python 3.6 ou supérieur).
Comment créer un fichier `requirements.txt` pour FastAPI ?
Pour créer un fichier `requirements.txt`, exécutez la commande `pip freeze > requirements.txt` dans votre environnement virtuel contenant FastAPI et les autres dépendances nécessaires. Ce fichier sera utilisé par Heroku pour installer toutes les dépendances lors du déploiement.
Quelle est la commande pour déployer mon application sur Heroku ?
Pour déployer votre application FastAPI sur Heroku, vous devez d'abord initialiser un référentiel Git dans votre projet avec `git init`. Ensuite, créez une application Heroku avec `heroku create` et enfin déploiez votre code avec `git push heroku master`. Si vous utilisez la branche principale `main` au lieu de `master`, utilisez `git push heroku main`. Assurez-vous que le fichier `Procfile` est correctement configuré pour exécuter votre application FastAPI.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.