Foreman: コンセプト:依存関係

作成日 2012年01月17日  ·  3コメント  ·  ソース: ddollar/foreman

こんにちは、

コンセプトをテストするためのフォークを作成しました。 Foremanを主に開発で使用して、Redis、Resqueワーカー、およびResqueスケジューラーを実行しています。 これらのワーカーとスケジューラーは、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が起動し、5秒後にRedisが起動し、10秒後にワーカーとスケジューラが起動します。

このバージョンのForemanには下位互換性がありますが、他にもいくつかの問題/質問があります。

  • なぜ5秒待つのですか? プロセスが依存関係を開始する準備ができているかどうかを判断できますか?
  • 親が停止するのを待つことができるのに、プロセスを停止するときに5秒待たないでください
  • この依存関係は、エクスポート時にどのような影響がありますか?

だから...あなたは以前に依存関係に関連する質問がありましたか? このソリューションは、Foremanの将来のバージョンに含まれる可能性があると思いますか?

そして...このプロジェクトに感謝​​します! これは、開発ワークフローの改善に本当に役立ちます。

全てのコメント3件

割り当てられたポートにバインドされているかどうかを検出する以外に、何かが「準備完了」であるかどうかを判断する方法は実際にはありません。 すべてのプロセスがポートにバインドされるわけではありません。このかなり複雑な関係をフォアマンに導入したくありません。

気が向いたら、目的のプロセスを開始する前に、他の何かが利用可能になるのを監視するスクリプトでプロセスをラップすることができます。

乾杯、
デビッド

私はこれが大好きです:(-RTSPProxyプロセスとRTSPClientプロセスがたくさんあり、クライアントの起動を遅らせたいです。

まだ実装されていますか?

このページは役に立ちましたか?
0 / 5 - 0 評価