Documentation Frappe Framework

Frappe Framework

Structure des dossiers

Après bench init, le dossier frappe-bench contient apps, sites, logs, config, env et un Procfile. Cette page explique le rôle de chacun et détaille les processus lancés par le Procfile par défaut.

2 min de lectureMis à jour le Source : docs.frappe.io

Arborescence d’un frappe-bench

Quand vous initialisez un nouveau dossier frappe-bench, vous obtenez une structure proche de celle-ci :

terminal
.
├── apps
│   ├── frappe
├── config
│   ├── redis_cache.conf
│   ├── redis_queue.conf
│   └── redis_socketio.conf
├── env
├── logs
├── Procfile
└── sites
    ├── apps.txt
    ├── assets
    ├── common_site_config.json
    └── site1.local
        ├── private
        ├── public
        └── site_config.json

Rôle de chaque dossier

apps

L’app frappe et les autres apps basées sur Frappe vivent dans ce dossier. Quand vous lancez bench new-app app_name, le squelette de la nouvelle app est créé ici. Vos apps personnalisées se trouvent ici, et c’est là que vous les modifiez et travaillez dessus.

En savoir plus sur les apps.

sites

Les sites sont servis depuis ce dossier. Quand vous lancez bench new-site site_name, le site est créé ici. Les sites se distinguent par le nom de leur dossier.

En savoir plus sur les sites.

logs

Ce dossier reçoit les fichiers de journal (log) des différents processus. Chaque fichier porte le nom du processus qui l’alimente.

config

Frappe utilise trois instances Redis pour gérer le cache, la file de tâches et la communication socket.io. Leurs configurations se trouvent ici.

env

L’environnement virtuel Python vit dans ce dossier. Les apps Frappe et leurs dépendances Python y sont installées.

Procfile

Frappe gère ses processus à l’aide d’un Procfile. Le Procfile par défaut ressemble à ceci :

terminal
redis_cache: redis-server config/redis_cache.conf
redis_socketio: redis-server config/redis_socketio.conf
redis_queue: redis-server config/redis_queue.conf
web: bench serve --port 8000

socketio: /usr/bin/node apps/frappe/socketio.js

watch: bench watch

schedule: bench schedule
worker_short: bench worker --queue short --quiet
worker_long: bench worker --queue long --quiet
worker_default: bench worker --queue default --quiet

Voici à quoi sert chaque processus.

ProcessusRôle
redis_cacheRedis utilisé pour le cache en mémoire.
redis_socketioRedis utilisé comme pub/sub entre les processus web et socketio pour la communication temps réel.
redis_queueRedis utilisé pour gérer la file des tâches de fond (Background Jobs).
webServeur web Python basé sur Werkzeug.
socketioServeur Node qui maintient une connexion socket.io avec le navigateur pour le temps réel.
watchServeur Node qui regroupe les assets JS/CSS avec Rollup et les recompile à chaque modification.
schedulePlanificateur de tâches (Job Scheduler) basé sur Python RQ.
worker_shortWorker Python avec un délai d’expiration court de 300 s.
worker_longWorker Python avec un délai d’expiration long de 1500 s.
worker_defaultWorker Python avec un délai d’expiration de 300 s.

Pages liées