Foreman: Conceito: dependência

Criado em 17 jan. 2012  ·  3Comentários  ·  Fonte: ddollar/foreman

Olá,

Criei um fork para testar um conceito. Estamos usando o Foreman principalmente no desenvolvimento para executar o Redis, um trabalhador Resque e um agendador Resque. Esse trabalhador e planejador dependem do Redis para serem iniciados e, em alguns casos, falham por causa disso.

A versão em https://github.com/rvanlieshout/foreman suporta a definição de dependência no Procfile. Por enquanto, ele usa apenas um atraso de 5 segundos para permitir que um dos pais comece. Um procfile pode ser semelhante a:

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

(Observação: o Redis não depende do Mongo aqui ... apenas para demonstrar)

Quando um "foreman start" é executado, ele inicia o Mongo e o PostOffice primeiro, seguido pelo Redis após 5 segundos e o trabalhador e o planejador após 10.

Esta versão do Foreman é compatível com versões anteriores, mas levanta alguns outros problemas / dúvidas:

  • Por que esperar 5 segundos? Somos capazes de determinar quando um processo está "pronto" para as dependências serem iniciadas
  • Não espere 5 segundos para interromper processos quando poderíamos apenas esperar que o pai pare
  • Qual é o efeito dessa dependência na exportação?

Então ... Você já teve dúvidas relacionadas à dependência antes? Você acha que essa solução pode ser incluída em uma versão futura do Foreman?

E ... obrigado por este projeto! Isso realmente nos ajuda a melhorar nosso fluxo de trabalho de desenvolvimento.

Todos 3 comentários

Não há realmente nenhuma maneira de saber quando algo está "pronto", a não ser detectar se ele foi vinculado à porta atribuída. Nem todos os processos estão vinculados a uma porta, e prefiro não introduzir essa relação bastante complexa no capataz.

Se você se sentisse tão inclinado, poderia ter seus processos embrulhados em um script que procurava algo mais ficar disponível antes de iniciar o processo pretendido.

Saúde,
David

Eu adoraria isso :( - Tenho vários processos RTSPProxy e RTSPClient e quero atrasar o início dos clientes.

Já está implementado?

Esta página foi útil?
0 / 5 - 0 avaliações