2010-04-25 80 views
1

我正在使用Pylons進行應用程序工作,我想知道是否有辦法確保它不會花太多時間處理一個請求。也就是說,我想找到一種方法在每個請求上放置一個計時器,以便在過多時間過後,請求會停止(並可能返回某種錯誤)。在主塔上停止長時間運行的請求

該應用程序應該允許用戶運行一些複雜的計算,但我想確保如果計算開始花費太多時間,我們會停止它以允許進行其他計算。

回答

3

而不是終止與一個錯誤的請求,一個較好的方法可能是執行在一個單獨的線程長時間運行的計算(或線程)或過程(或過程):

  1. 當計算請求是收到後,它會被添加到隊列中並用唯一的ID進行標識。您重定向到引用唯一ID的結果頁面,該頁面可能包含「請稍候,計算」消息和刷新按鈕(或通過元標記自動刷新)。
  2. 執行計算的線程或進程會從隊列中彈出請求,更新最終結果(也可能是進度信息),結果頁面處理程序在刷新時會向用戶顯示結果頁面處理程序。
  3. 計算完成後,返回的刷新頁面將沒有刷新按鈕或刷新標記,只是顯示最終結果。
+0

+1。當你有這個體系結構時,你可以終止長時間運行的請求,當它們的時間超過超時值時,它們會從主線程/進程中終止。 – 2010-04-25 20:48:45

相關問題