2011-06-26 43 views

回答

7

你或許應該看到the Heroku devcenter article關於這一點,因爲信息會更有幫助,這裏有一個小總結:

要回答超時問題:

雪松支持長輪詢和流式響應。你的應用程序有一個30秒的初始窗口,用一個字節迴應給客戶端。每發送一個字節(從客戶端收到或由應用程序發送)後,重置一個滾動55秒的窗口。如果在55秒窗口期間沒有數據發送,您的連接將被終止。

(也就是說,如果你有,而不是白楊,竹雪松,你可以發送一個字節每三十秒左右,只是爲了欺騙系統它可能會奏效。)

要回答你的DYNOS問題:

如果遇到請求超時,那麼額外的併發就毫無幫助。你可以將你的dynos調整到最大,你仍然會得到一個請求超時,因爲它是一個單一的請求,無法在正確的時間內提供服務。額外的dynos增加你的併發性,而不是你請求的速度。

(也就是說,不打擾增加更多DYNOS。)

request timeouts: 檢查你的代碼無限循環,如果你正在做一件大事:

如果是這樣,您應該將這些繁重的工作轉移到可以從您的Web請求異步運行的後臺作業中。有關詳細信息,請參閱Queueing

+0

感謝您的建議。如果正在處理請求,我如何每30秒發送一個字節? – donald

+0

@donald這取決於你在做什麼。例如,我們來舉一個遞歸階乘序列。我們可以創建一個時間對象(我們稱之爲'timer')。然後,我們獲得計時器的當前時間,並提前26秒添加25秒。每次運行函數來計算階乘,我們檢查當前時間是否大於或等於'timer'。如果是這樣,只需發送一條小消息給客戶端(類似靜態加載...)。這是一個非常基本的例子,很難說如果不知道你想要做什麼,什麼會對你有用。 – Arka

+0

謝謝。我有一個後續請求,我希望你能幫助我:http://stackoverflow.com/questions/6486035/rails-3-return-large-amount-of-data-to-user-via-api – donald

相關問題