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.
Arborescence d’un frappe-bench
Quand vous initialisez un nouveau dossier frappe-bench, vous obtenez une structure proche de celle-ci :
.
├── 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.jsonRô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 :
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 --quietVoici à quoi sert chaque processus.
| Processus | Rôle |
|---|---|
redis_cache | Redis utilisé pour le cache en mémoire. |
redis_socketio | Redis utilisé comme pub/sub entre les processus web et socketio pour la communication temps réel. |
redis_queue | Redis utilisé pour gérer la file des tâches de fond (Background Jobs). |
web | Serveur web Python basé sur Werkzeug. |
socketio | Serveur Node qui maintient une connexion socket.io avec le navigateur pour le temps réel. |
watch | Serveur Node qui regroupe les assets JS/CSS avec Rollup et les recompile à chaque modification. |
schedule | Planificateur de tâches (Job Scheduler) basé sur Python RQ. |
worker_short | Worker Python avec un délai d’expiration court de 300 s. |
worker_long | Worker Python avec un délai d’expiration long de 1500 s. |
worker_default | Worker Python avec un délai d’expiration de 300 s. |
