Hallo,
Ich habe einen Fork erstellt, um ein Konzept zu testen. Wir verwenden Foreman hauptsächlich in der Entwicklung, um Redis, einen Resque-Worker und einen Resque-Scheduler auszuführen. Diese Worker und Scheduler hängen davon ab, dass Redis gestartet wird, und schlagen in einigen Fällen deswegen fehl.
Die Version unter https://github.com/rvanlieshout/foreman unterstützt die Definition von Abhängigkeiten im Procfile. Im Moment wird nur eine Verzögerung von 5 Sekunden verwendet, damit ein Elternteil loslegen kann. Ein Profil könnte wie folgt aussehen:
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
(Hinweis: Redis ist hier nicht von Mongo abhängig ... nur zur Demonstration)
Wenn ein "Foreman-Start" ausgeführt wird, startet dieser zuerst Mongo und PostOffice, gefolgt von Redis nach 5 Sekunden und dem Arbeiter und Planer nach 10 Sekunden.
Diese Version von Foreman ist abwärtskompatibel, wirft jedoch einige andere Probleme / Fragen auf:
Also... Hatten Sie schon einmal Fragen zum Thema Abhängigkeit? Glauben Sie, dass diese Lösung in einer zukünftigen Version von Foreman enthalten sein könnte?
Und... danke für dieses Projekt! Es hilft uns wirklich, unseren Entwicklungsworkflow zu verbessern.
Es gibt keine wirkliche Möglichkeit zu sagen, wann etwas "bereit" ist, außer zu erkennen, ob es an seinen zugewiesenen Port gebunden ist. Nicht alle Prozesse binden an einen Port, und ich würde diese ziemlich komplexe Beziehung lieber nicht in foreman einführen.
Wenn Sie das Gefühl haben, könnten Sie Ihre Prozesse mit einem Skript umschließen, das darauf wartet, dass etwas anderes verfügbar wird, bevor der beabsichtigte Prozess gestartet wird.
Danke schön,
David
Ich würde das lieben :( - Ich habe eine Reihe von RTSPProxy- und RTSPClient-Prozessen und möchte das Starten der Clients verzögern.
Ist es schon umgesetzt?