2012-01-02 37 views
0

我使用Google Appengine來運行webapp,並且遇到了一些問題。我需要生成一個非常大的CSV文件並將其發送到客戶端。由於最大時間爲60秒,並且沒有要寫入的文件系統,所以我決定使用SJAX(我猜想同步AJAX)從服務器中獲取數據塊,並對其進行精簡,然後將其發送回服務器服務器將其作爲CSV文件發送回客戶端。很煩人。在同步AJAX調用期間更新GUI

無論如何,這需要很長時間,所以我想我會用一個進度條來檢查收到的總共有多少個塊。問題是,由於我使用SJAX,孤獨的js線程被阻塞。 setTimeout()也被阻止。任何人都知道有任何方法來解決這個問題(GUI部分,我試圖找出一個更好的方式來單獨處理文件下載)?

編輯:雖然我讚賞謝伊指着我在正確的方向來解決我的問題,我仍然好奇,是否有一種方法可以在SJAX調用期間模擬多線程。

+0

嗯..你不能異步地做請求是不是?這聽起來似乎只是在延續傳球風格上重寫一些連續性的問題。 – hugomg 2012-01-02 12:50:07

回答

3

我將回答有關CSV生成的部分,因爲它是您遇到問題的根本原因。

您可以使用任務隊列生成數據並將其保存到blobstore或Google雲端存儲。任務隊列有10分鐘的處理超時時間,希望應該有足夠的時間來生成數據。

您的模式應該是:調用開始生成數據的方法,使用pull檢查數據是否準備就緒(或者使用彗星的通道)並在準備就緒的情況下進行下載。

+0

謝謝,我想我會做這樣的事情。該項目在1小時內到期,我幾個小時前第一次得到它,所以我不想開始搞亂我不熟悉的東西。但我會看看現在:) – Eliezer 2012-01-02 12:46:38

+0

你做到了及時;)? – Rohan 2012-01-02 22:48:47

+0

及時製作:) – Eliezer 2012-01-03 04:08:57