2012-04-01 18 views
5

Heroku Cedar'deki tek iş parçacıklı modda ince çalışan tek iş parçacıklı Rails uygulamasına sahibim.Tek iş parçacıklı Rails uygulamasının eşzamanlı istekleri nasıl işliyor?

Bir dakikadan fazla süren büyük bir POST isteği (dosya yükleme) yaparken, aynı zamanda başka GET istekleri de yapabilirim.

Heroku desteği, yönlendirme katmanlarının isteği saklamadığını ve daha sonra bir kerede göndermediğini (nginx gibi birçok proxy'nin davranışı) garanti eder. Uygulamamın eşzamanlı istekleri ele almasında ısrar ediyorlar.

Neler oluyor burda?

cevap

6

İnce, olay tabanlı IO sağlayan EventMachine'ın üzerine kurulmuştur.

Bu, Thin'in şu anda GET isteklerini sunarken POST isteğinizin alınmasını gerektiği anlamına gelir. POST verileri yüklendiğinde, Thin (İnce) daha sonra Rails'e (eşzamanlı olarak işlendiği ve tamamlanana kadar diğer istekleri engellediği) iletmek için devam eder.

+0

ilginç - eğer doğruysa, bu zayıf davranışının daha fazla konuşulmadığını şaşırıyorum. onun önünde kendi küçük mini proxy'si var, eşzamanlılığı iyileştiriyor gibi. Bu davranışı anlamak için bakabileceğim ince kodun hangi kısmını biliyor musunuz? –

+0

Bende onun kodunu görmedim, ama mantıksal olarak, ağ katmanı olmalı. Bunu kaynaklarda tanımlamanın kolay olup olmadığını bilmiyorum. –

+0

İnce özetlerin oluşturucusuna benziyor: https://groups.google.com/forum/#!msg/thin-ruby/uKLD-qob6Kc/gH8b4MPATI8J –

İlgili konular