Foreman: 概念:依赖

创建于 2012-01-17  ·  3评论  ·  资料来源: ddollar/foreman

你好,

我创建了一个 fork 来测试一个概念。 我们主要在开发中使用 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 等级

相关问题

MikeRogers0 picture MikeRogers0  ·  3评论

jt2190 picture jt2190  ·  9评论

dunkstewart picture dunkstewart  ·  12评论

jasonivers picture jasonivers  ·  8评论

MathieuGilbert picture MathieuGilbert  ·  18评论