2016-04-04 18 views
1

Heroku'da bir Rails uygulaması çalıştırıyorum ve uzun süren bazı işleri gerçekleştirmek için özel bir işlem türü tanımladım, gerçekten uzun süren bir iş kolayca bir saat ya da daha fazla bir şey almak. Bazı küçük parçalara ayırmanın daha iyi olduğunu biliyorum, ancak bu görev için oldukça sorunlu. Sorun şu ki, yeni bir sürümü zorladığımda - Heroku tüm dynoları yeniden başlatıyor (web, işçiler, uzun işçiler - her şey). Sadece bazı süreç türlerini yeniden başlatmanın mümkün olduğunu merak ediyorum, ör. sadece web dynos?Bazı işlem türlerini yeniden başlatmadan bir Heroku uygulamasını yeniden yüklemek mümkün mü

cevap

1

Hayır, bu mümkün değil. Bunun en kolay ve en ölçeklenebilir yolu, uzun soluklu işlerinizi daha küçük parçalara bölmek olacaktır. Bu sayede çok küçük işlerin çok hızlı bir şekilde işlenmesini sağlayabilirsiniz. Uygulamanız yeniden başlatıldığında, uzun süren bir işi durdurmayacağından işleminizi yeniden başlatabilirsiniz.

Alternatif olarak, uygulamanız dağıtıldığında one-off dynos yeniden başlatılmayacaktır. heroku api kullanarak, programsal olarak boot one-off dynos programlayabilirsiniz. Bunu kullanarak, işlemek için ihtiyaç duyduğunuz her uzun çalışma için bir kerelik bir dyno başlatabilirsiniz.

Bu iş işlenecek (24 saat kadar, cycled nerede olacak) ve uygulamanızı yeniden başlatmadan dağıtabileceksiniz.

+0

Evet, tek seferlik harika bir fikir. –

İlgili konular