J'ai un processus de travail qui traite 1 message RabbitMq à la fois. En ce moment, dès que le travailleur quitte, le superviseur le redémarre (qui traitera le prochain message).
Je voudrais définir un intervalle de X secondes, afin que le superviseur ne redémarre pas immédiatement, mais il attend un certain temps avant de démarrer un autre travailleur.
Est-ce possible? Comment?
la source
J'avais besoin d'un moyen simple d'exécuter une commande à l'intérieur d'un conteneur Docker, où il n'y a pas de cron. Voici ce que j'utilise:
startsecs = 0 garantit que le superviseur pense que la commande a été démarrée avec succès même si elle se termine après quelques secondes. Sinon, le superviseur arrêtera de le redémarrer, pensant qu'il est en boucle.
Voici ce que vous verriez dans /root/date.ts avec l'exemple ci-dessus:
Réglez le sommeil à votre goût et remplacez 'date >> / root / test.ts' par tout ce dont vous avez besoin.
Cette solution est également utile si vous devez exécuter un cronjob plus souvent que toutes les minutes.
la source
et alors
1. vous devez utiliser la
exec
commande, sinon elle générera une soussleep 60 && exec your command
-progression et votre progression ressemblera à ce qui suitpuis lorsque vous utilisez
supervisorctl
pour arrêter urApp, vous arrêterez la progression 1818 et laisserez 3872 une progression orpheline2.recommandez de changer les démarrages à 5 de plus que les secondes de sommeil, puis lorsque vous démarrez cette application et vérifiez l'état, il vous montrera que cela commence
sinon, si vous définissez une valeur inférieure aux secondes de veille, lorsque vous démarrez l'application et vérifiez l'état, vous obtiendrez un état en cours d'exécution, mais il est toujours en veille cmd avant de s'exécuter réellement
3.Lorsque vous modifiez votre fichier de configuration, vous devez utiliser reload cmd ou simplement redémarrer votre supervord pour le faire fonctionner.
la source