Xcraft daemon helpers
npm install xcraft-core-daemonLe module xcraft-core-daemon fournit des outils pour gĂ©rer le cycle de vie des processus dĂ©mons dans l'Ă©cosystĂšme Xcraft. Il permet de dĂ©marrer, arrĂȘter et redĂ©marrer des scripts Node.js en tant que services d'arriĂšre-plan, tout en gĂ©rant leur Ă©tat via des fichiers PID.
- Structure du module
- Fonctionnement global
- Exemples d'utilisation
- Interactions avec d'autres modules
- Configuration avancée
- Détails des sources
- Cas d'utilisation typiques
- Gestion des erreurs
Le module expose une classe principale Daemon qui encapsule toutes les fonctionnalités nécessaires pour gérer un processus démon:
- Création et gestion de fichiers PID
- Démarrage de processus (avec ou sans mode détaché)
- ArrĂȘt propre des processus via signaux
- Vérification de l'état d'exécution
Le module fonctionne en créant une instance de la classe Daemon pour chaque service que vous souhaitez gérer. Cette instance maintient l'état du processus et permet d'interagir avec lui via des méthodes comme start(), stop() et restart().
Lorsqu'un dĂ©mon est dĂ©marrĂ©, un fichier PID est créé dans le rĂ©pertoire var/run/ de l'installation Xcraft. Ce fichier est utilisĂ© pour suivre l'Ă©tat du processus et permettre son arrĂȘt ultĂ©rieur.
``javascript
const Daemon = require('xcraft-core-daemon');
// Créer une instance pour gérer un serveur
const serverDaemon = new Daemon(
'myServer', // Nom du serveur
'./path/to/server.js', // Chemin vers le script du serveur
{
detached: true, // Exécuter en arriÚre-plan
env: process.env, // Variables d'environnement
},
false, // Désactiver les logs
myResponseAPI // API de réponse Xcraft (optionnel)
);
// Démarrer le serveur
serverDaemon.start();
// Plus tard, arrĂȘter le serveur
serverDaemon.stop();
`
`javascript
const Daemon = require('xcraft-core-daemon');
const serverDaemon = new Daemon(
'debugServer',
'./server.js',
{
detached: false,
inspectPort: 9230, // Port pour le débogueur Node.js
},
true, // Activer les logs
myResponseAPI
);
serverDaemon.start();
`
Le module xcraft-core-daemon interagit principalement avec:
- [xcraft-core-etc]: Pour charger la configuration Xcraft et déterminer l'emplacement des fichiers PID
- [xcraft-core-process]: Pour gérer le lancement des processus avec les options appropriées
Le module ne possÚde pas de fichier config.js spécifique, mais il utilise la configuration globale de Xcraft pour déterminer l'emplacement des fichiers PID.
| Variable | Description | Exemple | Valeur par défaut |
| -------------- | ------------------------------------------------- | ------- | ----------------- |
| XCRAFT_DEBUG | Active le mode débogage avec l'inspecteur Node.js | 1 | Non défini |
Ce fichier contient la classe Daemon qui est le cĆur du module. Elle gĂšre le cycle de vie complet des processus dĂ©mons.
#### Méthodes publiques
- constructor(serverName, serverScript, options, logs, resp) - Initialise une nouvelle instance de Daemon avec le nom du serveur, le chemin vers le script, les options de configuration, les paramÚtres de journalisation et l'API de réponse Xcraft.
- start() - DĂ©marre le dĂ©mon. VĂ©rifie d'abord si un processus avec le mĂȘme PID existe dĂ©jĂ . Si le processus n'est pas en cours d'exĂ©cution, il lance un nouveau processus et Ă©crit son PID dans un fichier.
- stop() - ArrĂȘte le dĂ©mon en envoyant un signal SIGTERM au processus identifiĂ© par le fichier PID, puis supprime ce fichier.
- restart() - ArrĂȘte puis redĂ©marre le dĂ©mon.
- isOurDaemon() - Vérifie si le processus actuel est géré par cette instance de Daemon.
- get proc() - Accesseur qui retourne l'objet processus sous-jacent.
#### Options de configuration
La méthode start() accepte un objet d'options avec les propriétés suivantes:
| Option | Description | Type | Valeur par défaut |
| ------------- | ----------------------------------------------- | ------- | --------------------------------------------- |
| detached | Exécute le processus en arriÚre-plan | Boolean | - |stdio
| | Configuration des flux d'entrée/sortie | String | 'ignore' ou 'pipe' selon detached et logs |env
| | Variables d'environnement pour le processus | Object | process.env |bin
| | Chemin vers l'exécutable à utiliser | String | process.execPath (Node.js) |argv
| | Arguments supplémentaires à passer au script | Array | [] |inspectPort` | Port pour l'inspecteur Node.js en mode débogage | Number | 9229 |
|
1. Serveur Xcraft: Le module peut optionellement ĂȘtre utilisĂ© pour dĂ©marrer et gĂ©rer le serveur Xcraft lui-mĂȘme.
2. Services d'arriÚre-plan: Idéal pour les services qui doivent continuer à fonctionner indépendamment du processus principal.
3. Processus de longue durĂ©e: Pour les tĂąches qui s'exĂ©cutent pendant une longue pĂ©riode et qui doivent ĂȘtre gĂ©rĂ©es de maniĂšre fiable.
Le module gĂšre plusieurs cas d'erreur:
- Vérification si un processus avec le PID enregistré existe réellement
- Suppression des fichiers PID orphelins lorsque le processus n'existe plus
- Gestion des erreurs lors du dĂ©marrage ou de l'arrĂȘt des processus
---
_Cette documentation a été mise à jour automatiquement._
[xcraft-core-etc]: https://github.com/Xcraft-Inc/xcraft-core-etc
[xcraft-core-process]: https://github.com/Xcraft-Inc/xcraft-core-process