2012-11-01 54 views
1

我有一個HTML頁面,其中有四個按鈕啓動,停止,暫停和恢復。按鈕的功能如下:獲取響應Django查看

  • 開始按鈕:啓動後端模擬器。 (模擬器需要大約3分鐘的執行時間。)
  • 停止按鈕:停止模擬器。
  • 暫停按鈕:暫停模擬器。
  • 恢復按鈕:從暫停階段繼續模擬器。

每次點擊按鈕都會調用一個單獨的視圖函數。我面臨的問題是,當我點擊開始按鈕時,它會通過Python視圖中的函數調用啓動Simulator。但正如我所提到的,模擬器需要大約3分鐘才能完成它的執行。所以,3分鐘我的UI完全沒有響應。我不能按停止,暫停或恢復按鈕,直到呈現Django的當前視圖。

那麼解決這個問題的最好方法是什麼?我應該爲模擬器產生一個非阻塞過程,如果是這樣,我怎麼能在視圖渲染出新產生的過程完成它的執行之後才知道。

回答

1

你絕對需要Ajax作爲前端。

對於後端,您將使用類似celery的東西,其中 可以執行異步任務(啓動/停止模擬器)。與芹菜溝通, 你可以通過polling,long pollingweb sockets

+0

我會看看芹菜並在這裏評論更新。我目前正在使用AJAX。 – Sibi

+0

另外我目前的AJAX實現調用了一個特定的Django視圖函數。 – Sibi

+0

@Sibi是的,該特定的視圖功能可能需要與芹菜談話。 – rantanplan

0

最簡單的我認爲會使用ajax來啓動他的模擬器。開始請求的響應可以在同一頁面上更新。

但是,您仍然需要考慮如何暫停,恢復和停止以前請求啓動的模擬器。即如何管理和操縱模擬器的狀態。

也許你想更新數據庫。

+0

我目前使用AJAX來啓動模擬器。即使使用AJAX,也會調用特定的django視圖函數,並阻止UI直到模擬器被執行。 – Sibi