Foreman: Konsep: ketergantungan

Dibuat pada 17 Jan 2012  ·  3Komentar  ·  Sumber: ddollar/foreman

Halo,

Saya telah membuat garpu untuk menguji sebuah konsep. Kami menggunakan Foreman terutama dalam pengembangan untuk menjalankan Redis, pekerja Resque dan penjadwal Resque. Pekerja dan penjadwal ini bergantung pada Redis untuk dimulai dan dalam beberapa kasus gagal karena itu.

Versi di https://github.com/rvanlieshout/foreman mendukung definisi ketergantungan di Procfile. Untuk saat ini hanya menggunakan penundaan 5 detik untuk memungkinkan orang tua memulai. Profil dapat terlihat seperti:

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

(Catatan: Redis tidak bergantung pada Mongo di sini ... hanya untuk menunjukkan)

Ketika "mandor start" dijalankan, Mongo dan PostOffice dimulai terlebih dahulu, diikuti oleh Redis setelah 5 detik dan pekerja dan penjadwal setelah 10.

Versi Foreman ini kompatibel ke belakang, tetapi menimbulkan beberapa masalah / pertanyaan lain:

  • Mengapa menunggu 5 detik? Apakah kita dapat menentukan kapan suatu proses 'siap' untuk memulai dependensi?
  • Jangan menunggu 5 detik saat menghentikan proses ketika kita hanya bisa menunggu induk berhenti
  • Efek apa yang dimiliki ketergantungan ini saat mengekspor?

Jadi... Pernahkah Anda memiliki pertanyaan terkait ketergantungan sebelumnya? Apakah Anda pikir solusi ini mungkin sesuatu yang akan dimasukkan dalam versi Foreman yang akan datang?

Dan... terima kasih untuk proyek ini! Ini sangat membantu kami meningkatkan alur kerja pengembangan kami.

Semua 3 komentar

Sebenarnya tidak ada cara untuk mengetahui kapan sesuatu "siap" selain mendeteksi jika telah terikat ke port yang ditetapkan. Tidak semua proses mengikat ke port, dan saya lebih suka tidak memperkenalkan hubungan yang agak rumit ini ke mandor.

Jika Anda merasa sangat ingin, Anda dapat membuat proses Anda dibungkus dengan skrip yang melihat sesuatu yang lain tersedia sebelum memulai proses yang dimaksud.

Bersulang,
David

Saya akan menyukai ini :( - Saya memiliki banyak proses RTSPProxy dan RTSPClient dan saya ingin menunda memulai klien.

Sudah dilaksanakan belum?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat