2014-05-16 151 views
0

我在Heroku上部署了Rails應用程序。它有「項目」模型,在「創建」操作中正在處理一些數據(文本分析,有時是巨大的文本),這個過程需要很長時間。如果另一個請求到達Web服務器,則加載任何頁面所用的時間太長。避免這種延遲的最佳方法是什麼?Ruby on Rails,多個請求延遲

回答

0

在這種情況下,您通常會使用後臺作業管理器,如DelayedJobResque。如果您剛剛開始,我建議您使用DJ播放,因爲它設置起來非常簡單,並且不需要任何外部依賴。

既然你已經提到過Heroku,他們在你的應用程序開始之前就已經寫好了here。從本質上講,您需要長時間運行的任務,並將它們添加到作業隊列中(在DJ的情況下,只是數據庫中的另一個表),其中另一個進程將監視該表並按其出現的方式運行作業。通過這種方式,您可以在作業在後臺工作時立即向用戶返回響應,同時保持您的Web dyno免費處理請求。

如果您使用的是Heroku,那麼您需要支付工人測功機才能與您的網絡測試儀一起運行。

另外它取決於您的服務器設置。如果您使用的是像Unicorn這樣的應用程序服務器,那麼您應該可以在單個dyno中運行多個Rails進程,因此即使您的文本分析綁定了,也仍然可以處理Web請求。

但是誠實地說,這聽起來好像你的應用還沒有準備好在Heroku的生產環境中運行,因爲這個問題在你部署之前應該已經有了一個解決方案。您不希望讓Web進程被束縛在可能更適合後臺工作進程的工作上。