web-dev-qa-db-fra.com

Avertissements minUptime et spinSleepTime du package NodeJS Forever

J'essaie d'exécuter la fonction forever pour node.js mais j'obtiens ci-dessous des avertissements;

C:\serv>forever start SERVER.js
warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up f
or at least 1000ms
info:    Forever processing file: SERVER.js

Comment régler --minUptime et --spinSleepTime pour supprimer ces avertissements

Package forever installé avec npm install forever -g

22
John

Ce ne sont que des avertissements. Vous pouvez continuer à les ignorer, si vous le souhaitez. Mais si vous souhaitez les définir explicitement, forever --help vous indique comment procéder. Lancez simplement forever avec:

forever start --minUptime 1000 --spinSleepTime 1000 SERVER.js
17
Khôi

La documentation n'est pas très exhaustive, un peu d'informations complémentaires.

Dans les exemples suivants, nous utiliserons deux scripts:

fail-fast.js:

process.exit(1);

fail-slow.js:

setTimeout(() => { process.exit(1); }, 2000);

1) utiliser les valeurs par défaut

forever fail-fast.js

fail-fast.js le script s'exécutera ne seule fois, alors aucune autre tentative de démarrage ne sera effectuée.

forever fail-slow.js

fail-slow.js le script sera redémarré indéfiniment, car il reste en place plus de 1000 ms (valeur par défaut de minUptime si non spécifié). Vous pouvez limiter le nombre de redémarrages avec le -m paramètre.

2) réglage uniquement minUptime

forever --minUptime 10000 fail-fast.js
forever --minUptime 10000 fail-slow.js

Tous les deux fail-fast.js et fail-slow.js sera ne sera jamais redémarré, car nous avons étendu minUptime à 10 secondes et maintenant fail-slow.js est considéré comme tournant.

3) définir spinSleepTime

Chaque fois que vous définissez spinSleepTime (avec ou sans minUptime), votre processus redémarrera même s'il est considéré comme "tournant".

forever --spinSleepTime 30000 fail-fast.js
forever --spinSleepTime 30000 fail-slow.js

Les deux scripts seront redémarrés pour toujours, en attendant spinSleepTime millisecondes entre les redémarrages.

16
Megadix

En bref:

When stop
    if hadRunTime >= minUptime 
       restart 
    else if spinSleepTime != 0
         wait spinSleepTime
         restart
    else 
         stop and no restart

@Megadix La réponse a quelque chose de mal avec spinSleepTime. fail-fast.js redémarrera wating spinSleepTime, mais fail-slow.js redémarrera immédiatement, pas d'attente! Il peut être prouvé par:

 console.log((new Date()).getTime());
 setTimeout(() => {
    process.exit(1);
   }, 2000);

sortie comme:

1468812185697
error: Forever detected script exited with code: 1
error: Script restart attempt #1
1468812187766
error: Forever detected script exited with code: 1
error: Script restart attempt #2
1468812189834
error: Forever detected script exited with code: 1
error: Script restart attempt #3
1468812191901
error: Forever detected script exited with code: 1
error: Script restart attempt #4
1468812193977
error: Forever detected script exited with code: 1
error: Script restart attempt #5
1468812196039
error: Forever detected script exited with code: 1
error: Script restart attempt #6
1468812198107
error: Forever detected script exited with code: 1
error: Script restart attempt #7
1468812200172
error: Forever detected script exited with code: 1
3
user6590090
forever start --minUptime 1234 --spinSleepTime 3421 SERVER.js

https://github.com/nodejitsu/forever#usage

0
jgillich