2015-01-08 13 views
1

我有一個rails 4應用程序,它有一些方法可以對外部API執行長時間的調用。問題是這些請求阻止了整個應用程序。並且只有一個用戶(請求)可以同時提供。這不是想要的。 所以我的想法是使用瘦作爲Web服務器,因爲它意味着多線程並支持併發。我是對的,那是在開源版本的phusion將無法同時運行多個請求哪個服務器爲用戶提供長時間運行請求的rails 4應用程序?

什麼是這樣的情況下表現最好的設置?

+0

只要你等待大部分請求,你就可以調諧Passenger開放源代碼來處理多個併發連接,這基本上就是SSE。你可以在這裏閱讀更多關於它的信息:https://www.phusionpassenger.com/library/config/apache/tuning_sse_and_websockets/ –

回答

0

我強烈建議你看看其中一個背景作業處理系統(我個人最喜歡的是Sidekiq)。將這些長時間運行的作業卸載到Sidekiq並重新配置您的應用程序以適應(比如檢查工作是否完成等)。

+0

這就是我所做的。我使用了sidekiq,但這意味着我必須在調用api之後輪詢或流式傳輸結果。但是,作爲允許許多併發連接的服務器,瘦客戶端有什麼好處? – dc10

+0

什麼也沒有。真的取決於你的應用程序以及「長期服用」的含義。在某些時候,客戶端開始超時,等等。 –

+1

請求通常最多需要5到30秒,所以超時應該不成問題。在這種情況下,恕我直言,輪詢或流式傳輸可能會過度架構,因爲輪詢會一直ping您的應用程序,並導致更多的請求。所以爲什麼不長時間運行的請求等待api調用完成。 – dc10

相關問題