Foreman: Concept : dépendance

Créé le 17 janv. 2012  ·  3Commentaires  ·  Source: ddollar/foreman

Bonjour,

J'ai créé un fork pour tester un concept. Nous utilisons Foreman principalement en développement pour exécuter Redis, un travailleur Resque et un planificateur Resque. Ces travailleurs et planificateurs dépendent du démarrage de Redis et échouent dans certains cas à cause de cela.

La version sur https://github.com/rvanlieshout/foreman prend en charge la définition de la dépendance dans le Procfile. Pour l'instant, il n'utilise qu'un délai de 5 secondes pour permettre à un parent de commencer. Un procfile pourrait ressembler à :

mongodb:       mongod --quiet --dbpath=db/mongo/
| redis:       redis-server /opt/local/etc/redis.conf
| | worker:    bundle exec rake environment resque:work QUEUE=* VERBOSE=1 RAILS_ENV=development
| | scheduler: bundle exec rake resque:scheduler QUEUE=* VERBOSE=1 RAILS_ENV=development
post_office:   post_office --smtp 10025 --pop3 10110

(Remarque : Redis ne dépend pas de Mongo ici... juste pour démontrer)

Lorsqu'un "démarrage contremaître" est exécuté, il démarre d'abord Mongo et PostOffice, suivis de Redis après 5 secondes et du travailleur et du planificateur après 10 secondes.

Cette version de Foreman est rétrocompatible, mais soulève d'autres problèmes/questions :

  • Pourquoi attendre 5 secondes ? Sommes-nous en mesure de déterminer quand un processus est « prêt » pour le démarrage des dépendances
  • N'attendez pas 5 secondes lors de l'arrêt des processus alors que nous pourrions simplement attendre que le parent s'arrête
  • Quel effet cette dépendance a-t-elle lors de l'exportation ?

Alors... Avez-vous déjà eu des questions sur la dépendance ? Pensez-vous que cette solution pourrait être incluse dans une future version de Foreman ?

Et... merci pour ce projet ! Cela nous aide vraiment à améliorer notre flux de travail de développement.

Tous les 3 commentaires

Il n'y a pas vraiment de moyen de savoir quand quelque chose est "prêt" autre que de détecter s'il s'est lié à son port assigné. Tous les processus ne sont pas liés à un port, et je préfère ne pas introduire cette relation plutôt complexe dans Foreman.

Si vous vous sentez si enclin, vous pourriez avoir vos processus enveloppés avec un script qui attend que quelque chose d'autre devienne disponible avant de commencer le processus prévu.

À votre santé,
David

J'adorerais ça :( - J'ai un tas de processus RTSPProxy et RTSPClient et je veux retarder le démarrage des clients.

Est-il déjà mis en œuvre ?

Cette page vous a été utile?
0 / 5 - 0 notes