我有一個rails應用程序,偶爾需要做非常慢的網絡調用(可能永遠不會返回)基於web用戶擊中路線。如果調用比正常情況慢(或不返回),Rails似乎會阻止,不允許任何其他事情發生(我無法打開另一個瀏覽器並選擇不同的路由,我無法使用另一臺機器不同的路線,沒有)。如何使Rails非阻塞?
我嘗試使用Phusion Passenger來處理多線程(假設它是一個雜種服務器問題),而Apache可以處理進入無限循環(而Mongrel不能)的測試控制器,似乎每個經常(當網絡呼叫不回來時),它仍然阻塞。我無法真正複製這個,所以它不是全部可測試的:
是RAILS本身阻塞,還是Apache不是正確的服務器?如果它是軌道,是否有任何我可以做的,以阻止其他用戶打開自己?
我也應該注意到這與Rails沒有任何關係。如果您的請求需要永久返回並且用盡所有應用程序進程(幾乎以任何語言),那麼最終會出現此問題。最近對'evented'web服務器的主流化在某種程度上是對此的迴應(例如,參見nodejs.org)。 – rfunduk 2010-07-19 19:19:44