2012-10-24 52 views
3

注意:這篇文章中有些內容不是最好的做法。被警告:)Heroku的解決方法30秒超時w /長外部查詢

  • 我正在處理連接到微型實例AWS服務器的管理儀表板。
  • 該數據庫擁有數千萬條記錄。
  • 大多數查詢都會在幾秒鐘內回來,但有些需要花費一兩分鐘的時間才能返回,這是基於我控制範圍之外的一些事情。

由於Heroku的30秒限制(https://devcenter.heroku.com/articles/request-timeout),我需要找到一些方法來購買時間來保持連接打開,直到查詢返回。 Heroku確實表示,在此期間,您可以通過向客戶端發送字節來購買時間,這會再花費您55秒的時間。

不管怎麼說,只是好奇,如果你們有一個解決方案來拖延Heroku的時間。謝謝!

回答

0

您可能會發送一個查詢,讓您的AWS服務器立即響應,只是說它收到查詢,然後一旦它拉出數據,讓它通過POST請求將數據發送到您的Heroku實例。

+0

謝謝,我會接受的答案,但如果你感到無聊,代碼示例將有所幫助:) – Kevin

+0

我所描述的僅僅是一個webhook--請參見http://www.slideshare.net/progrium/使用的web-掛鉤。 –

0

是,通過AJAX做,發回說,在有些再問你可以打破東西放進多個查詢的響應...

1

我已經爲此做了一個解決方法。我們的應用程序正在運行西納特拉,我已經使用EventMachine gem寫作\0保持到流每隔10秒這樣的Heroku不緊密連接,直到操作完成,看https://gist.github.com/troex/31790323fb4a8a29c8b8cd84e50ad1e8

我的例子是使用彪馬的例子,但它應該工作獨角獸和薄(以及薄(你不需要EventMachine.run))。對於Rails,我認爲你可以使用before/after_action來啓動/停止事件計時器。