Foreman: Концепция: зависимость

Созданный на 17 янв. 2012  ·  3Комментарии  ·  Источник: ddollar/foreman

Привет,

Я создал вилку, чтобы проверить концепцию. Мы используем 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 обратно совместима, но вызывает некоторые другие проблемы / вопросы:

  • Зачем ждать 5 секунд? Можем ли мы определить, когда процесс «готов» к запуску зависимостей
  • Не ждите 5 секунд при остановке процессов, когда мы могли бы просто подождать, пока родитель остановится
  • Какой эффект имеет эта зависимость при экспорте?

Итак ... Были ли у вас вопросы, связанные с зависимостью раньше? Как вы думаете, это решение может быть включено в будущую версию Foreman?

И ... спасибо за этот проект! Это действительно помогает нам улучшить рабочий процесс разработки.

Все 3 Комментарий

На самом деле нет никакого способа узнать, когда что-то «готово», кроме как определить, привязано ли оно к назначенному ему порту. Не все процессы привязаны к порту, и я бы не стал вводить эти довольно сложные отношения в foreman.

Если бы вы были так склонны, вы могли бы обернуть свои процессы сценарием, который следит за тем, чтобы что-то еще стало доступным, прежде чем запускать намеченный процесс.

Ваше здоровье,
Дэйвид

Мне бы это понравилось :( - У меня есть куча процессов RTSPProxy и RTSPClient, и я хочу отложить запуск клиентов.

Это уже реализовано?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги