我在GAE-Python上的網站有一個函數來使用演化優化算法計算一些數學運算,當用戶點擊一個按鈕時,這個算法將被ajax請求調用。每個請求通常需要很長時間才能完成計算。如何中斷當前請求,Google App Engine?
我需要一些方法(ajax或其他方法)告訴服務器取消當前請求,而不是使用ajax的xhr.abort()
函數,該函數不會停止服務器端的計算。
對於早期嘗試,我發現GAE具有請求計時器,如果請求花費太長時間完成,則運行時會提出DeadlineExceededError
。
基於這個想法,我想問一下,是否有辦法向服務器發送一個信號,使運行時觸發請求中斷?
沒有。您將在60秒後擊中DeadLineExceededError,或者您要求在您的控制下終止(返回)。 –
如果您認爲請求需要超過60秒,並且您希望獲得更多控制權限,我建議您使用一項任務(可以運行10分鐘),並且可以監視memcache狀態。您的前端請求還可以定期檢查memcache狀態。這還需要線程或異步任務和期貨 –
您需要一個單獨的處理程序(可能還有一個令牌,以便請求可以識別要監視的memcache密鑰),它接收取消請求並在memcache中設置鍵/值。 –