我運行一個後端到應用程序作爲一個應用程序引擎(JAVA)。 使用端點,我收到請求。問題是,我需要計算一些大的東西,但我需要快速響應前端的響應時間。因此,作爲一種解決方案,我想預先計算某些內容,並將其存儲爲專用的內存緩存。
我這樣做的方式,是通過添加靜態塊,然後運行在默認隊列中的延遲任務。 有沒有更好的方法在啓動時計算一些東西?
現在,這種延遲任務執行大量的數據存儲操作。有時候,他們超時。所以我創建了一個系統,它在超時之前重試,直到成功。但是,當我啓動應用程序引擎時,它立即創建兩個延期任務。儘管事實上我設置了DeferredTaskContext.setDoNotRetry(true);它也會在失敗時重試任務。
老實說,延期任務感覺非常挑剔。
我只是想(爲數據集增長可能更長)來運行需要> 5分鐘的方法。我想在啓動時運行此方法,然後定期運行。你會如何模型?我的第一個想法是一個cron工作,但他們的時間有限。我需要一個運行延期任務的cron作業,希望它們不會以某種方式堆積起來或產生重複或重新開始。
感謝您的幫助和美好的一天。
德賴斯
cron作業與延期任務的截止日期相同 – Greg
您如何跨實例共享/訪問此數據(分類器)?記住每個實例都有自己的內存。所以目前我會想象你每次啓動實例時都會開始構建。一旦處理完畢,它可以被序列化爲<1MB,如果不是,那麼你將需要拆分序列化的實體並將其存儲在塊(在數據存儲區中)。從數據存儲獲得的速度並不比memcache慢,而且是可靠的。 –
這是我的主要問題,它不能輕易地在數據存儲中的單個塊中進行序列化。所以無論如何,我將不得不做一些批量操作。 –