我們有一個REST服務調用可能需要2分鐘以上處理的系統進程。由於在客戶端上,我不想等待服務器回覆30秒到2分鐘的響應,我是否可以將202返回給客戶端,以通知它正在處理中,但不一定需要等待進程完?爲REST服務異步返回http狀態碼202?
有沒有一種安全的方法來處理這個問題? (我確信這裏存在線程安全問題,特別是如果該服務可能會同時觸發大量請求,那麼創建大量線程可能不是解決方案。)
我們正在探索的是使用批處理每5分鐘檢查一次,以檢查數據庫是否需要生成報告(這是系統過程的用途),但我對這種可能性感到好奇。
在此先感謝
編輯 最終產品實際上是被生成的,然後通過電子郵件發送給用戶的PDF報告。我主要試圖避免等待服務響應返回消費客戶的〜2分鐘。
所以你真正要問的是,REST服務是否可以返回202 *然後繼續處理*? –
正確的,正如http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html狀態代碼202.我只是試圖解決等待部分沒有數據庫變化atm。批處理是我們尚未實現的未來任務,但如果這種方式是可能的,我們很好奇。 – DavidAndroidDev
@JimMischel所以,是的,你是對的。但是,我認爲直到服務完成執行它的方法之前,纔會對客戶端進行響應。我很好奇,如果我們可以在方法執行期間返回狀態碼。因此問題的異步性。 – DavidAndroidDev