Привет,
Я создал вилку, чтобы проверить концепцию. Мы используем Foreman в первую очередь в разработке для запуска Redis, Resque worker и Resque scheduler. Эти воркер и планировщик зависят от запуска Redis и в некоторых случаях из-за этого не работают.
Версия на https://github.com/rvanlieshout/foreman поддерживает определение зависимости в Procfile. На данный момент он использует задержку всего в 5 секунд, чтобы позволить родителю начать работу. Файл procfile может выглядеть так:
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
(Примечание: Redis здесь не зависит от Mongo ... просто для демонстрации)
Когда выполняется «запуск мастера», он запускает сначала Mongo и PostOffice, затем Redis через 5 секунд и рабочий процесс и планировщик через 10.
Эта версия Foreman обратно совместима, но вызывает некоторые другие проблемы / вопросы:
Итак ... Были ли у вас вопросы, связанные с зависимостью раньше? Как вы думаете, это решение может быть включено в будущую версию Foreman?
И ... спасибо за этот проект! Это действительно помогает нам улучшить рабочий процесс разработки.
На самом деле нет никакого способа узнать, когда что-то «готово», кроме как определить, привязано ли оно к назначенному ему порту. Не все процессы привязаны к порту, и я бы не стал вводить эти довольно сложные отношения в foreman.
Если бы вы были так склонны, вы могли бы обернуть свои процессы сценарием, который следит за тем, чтобы что-то еще стало доступным, прежде чем запускать намеченный процесс.
Ваше здоровье,
Дэйвид
Мне бы это понравилось :( - У меня есть куча процессов RTSPProxy и RTSPClient, и я хочу отложить запуск клиентов.
Это уже реализовано?