---
title: Comment j’ai construit 200 000 pages en Python
description: "Générer 200 000 pages HTML statiques avec Python : le choix du générateur, l'architecture, la mémoire, les erreurs et le résultat."
url: "https://seoaddict.co/fr/construire-200000-pages-python-retour-experience/"
markdown_url: "https://seoaddict.co/fr/construire-200000-pages-python-retour-experience.md"
type: post
language: fr
site: SEO Addict
published: "2026-02-06T08:00:00+00:00"
modified: "2026-02-06T08:00:00+00:00"
author: admin
taxonomies:
  category:
    - Uncategorized
  post_tag:
    - Performance
    - Python
    - SSG
    - Technique
breadcrumbs:
  - name: SEO Addict
    url: "https://seoaddict.co/fr/"
  - name: Blog
    url: "https://seoaddict.co/fr/blog/"
  - name: Comment j’ai construit 200 000 pages en Python
schema:
  - "@context": "https://schema.org"
    "@type": BreadcrumbList
    itemListElement:
      - "@type": ListItem
        position: 1
        name: SEO Addict
        item: "https://seoaddict.co/fr/"
      - "@type": ListItem
        position: 2
        name: Blog
        item: "https://seoaddict.co/fr/blog/"
      - "@type": ListItem
        position: 3
        name: "Comment j&rsquo;ai construit 200 000 pages en Python"
  - "@context": "https://schema.org"
    "@type": BlogPosting
    headline: "Comment j&rsquo;ai construit 200 000 pages en Python"
    datePublished: "2026-02-06T09:00:00+01:00"
    dateModified: "2026-02-06T09:00:00+01:00"
    mainEntityOfPage: "https://seoaddict.co/fr/construire-200000-pages-python-retour-experience/"
    inLanguage: fr
    author:
      "@type": Person
      name: Sébastien Grillot
      url: "https://sebastiengrillot.com/a-propos/"
      sameAs:
        - "https://sebastiengrillot.com/a-propos/"
        - "https://koeki.fr/"
    publisher:
      "@type": Organization
      name: SEO Addict
      url: "https://seoaddict.co/fr/"
generator: Markdown Twin 1.0.0
---

# Comment j’ai construit 200 000 pages en Python

6 février 2026 · Par [Sébastien Grillot](https://seoaddict.co/fr/qui-sommes-nous/) · Performance, Python, SSG, Technique

Quand j’ai décidé de créer un site de 200 000 pages statiques, la première question a été : quel générateur utiliser ? Après avoir évalué Hugo, Eleventy et Jekyll, j’ai opté pour un générateur maison en Python. Voici pourquoi, et comment ça s’est passé.

## Pourquoi un générateur maison

Les générateurs de sites statiques classiques sont conçus pour des sites de quelques centaines à quelques milliers de pages. À 200 000 pages, ils montrent leurs limites : temps de build excessifs, consommation mémoire explosive et manque de souplesse pour les pipelines de données complexes.

Python offrait exactement ce dont j’avais besoin : un écosystème riche pour le traitement de données (pandas, json), une gestion fine de la mémoire avec les générateurs et la possibilité de paralléliser le build avec multiprocessing.

## Architecture du pipeline

Le pipeline se décompose en trois étapes : import des données (CSV DATAtourisme vers JSON structuré), enrichissement (scores, descriptions, géocodage) et génération (gabarits HTML avec emplacements). Chaque étape est indépendante et idempotente. Pour explorer les approches de génération statique, [Docteur Jekyll](https://docteurjekyll.fr/) est une ressource précieuse sur les générateurs statiques et leurs architectures.

## Le défi de la mémoire

Charger 200 000 fiches en mémoire n’est pas anodin. La première version du script tentait de tout garder en RAM : résultat, plantage à 8 Go. La solution : traiter les fiches par lots de 10 000, écrire les fichiers au fur et à mesure et libérer la mémoire entre chaque lot.

Les générateurs Python (yield) ont été essentiels. Au lieu de construire une liste de 200 000 éléments, le script génère les pages une par une, en ne gardant en mémoire que la page en cours.

## Performance du build

Le build complet prend environ 12 minutes sur un MacBook Pro M3. C’est long, mais acceptable pour un build complet. En mode incrémental (uniquement les fiches modifiées), il tombe à moins de 30 secondes grâce à un système d’empreinte du contenu.

La parallélisation avec multiprocessing.Pool a divisé le temps de build par quatre sur une machine à 8 cœurs. Chaque processus génère un sous-ensemble de pages de façon indépendante.

## Les erreurs à éviter

Ne sous-estimez pas la gestion des caractères spéciaux. Avec les données DATAtourisme, les accents, les guillemets et les caractères spéciaux dans les noms de lieux créent des bugs subtils. Un pipeline de nettoyage robuste est indispensable avant la génération.

Autre piège : les slugs en double. Sur 200 000 lieux, les collisions de noms sont fréquentes. Un système de dédoublonnage avec suffixe (nom-commune) est nécessaire.

## Le résultat

200 000 pages HTML statiques, chacune avec son Schema.org, ses métadonnées uniques et son maillage interne. Le tout déployable par FTP sur un hébergement mutualisé. Zéro serveur, zéro base de données, zéro maintenance.

**Sébastien Grillot**

Consultant SEO et IA depuis 2009, directeur général de Kōeki, cocréateur du Pull Moche et de SEO Addict.

[Qui sommes-nous](https://seoaddict.co/fr/qui-sommes-nous/) · [sebastiengrillot.com](https://sebastiengrillot.com/a-propos/)

## Pendant que vous êtes là

Des t-shirts sur le même sujet. Moins de 2 000 mots, plus de 100 % coton.

Pas encore commandable ![Erreur critique – T-shirts](https://seoaddict.co/wp-content/uploads/2026/10/T161-fr-380x450.webp)

### [Erreur critique](https://seoaddict.co/fr/p/erreur-critique-t-shirt/)

33,90 €
Niveau de jargon 4/5 : Très initié

Pas encore commandable ![47 mises à jour – T-shirts](https://seoaddict.co/wp-content/uploads/2026/10/T162-fr-380x450.webp)

### [47 mises à jour](https://seoaddict.co/fr/p/47-mises-a-jour-t-shirt/)

33,90 €
Niveau de jargon 4/5 : Très initié

Pas encore commandable ![/wp-admin – T-shirts](https://seoaddict.co/wp-content/uploads/2026/10/T163-fr-380x450.webp)

### [/wp-admin](https://seoaddict.co/fr/p/wp-admin-t-shirt/)

33,90 €
Niveau de jargon 5/5 : Hardcore

Pas encore commandable ![Bonjour tout le monde ! – T-shirts](https://seoaddict.co/wp-content/uploads/2026/10/T164-fr-380x450.webp)

### [Bonjour tout le monde !](https://seoaddict.co/fr/p/bonjour-tout-le-monde-t-shirt/)

33,90 €
Niveau de jargon 4/5 : Très initié

[← Tous les articles](https://seoaddict.co/fr/blog/)


<!-- Page cached by LiteSpeed Cache 7.9.1 on 2026-10-18 03:00:12 -->