2012-06-19 82 views
4

好吧,我決定在這裏發佈這個問題,因爲我真的不知道該怎麼做,或者即使它可能。你可能會告訴我這是一個轉發,但我已經閱讀了類似的文章,並沒有幫助我。Django/Python用進度條下載文件

這是交易。我有一個django的管理界面,並希望從我的服務器上的外部網站下載一個文件,並顯示下載百分比的進度條。

我在下載時無法做任何事情。我試圖在視圖中使用call_command運行命令,但它是一樣的。

是因爲Django服務器是單線程的嗎?那麼,是否有可能實現我想要做的事情?

由於提前,

回答

2

這是可能的,但需要一些跳躍,雖然隱喻箍。我的答案不是Django特有的,你需要將它翻譯成你的框架。

  1. 啓動一個執行實際下載的線程。在下載時,它必須更新用戶會話中的一些數據結構(下載的總大小等)。

  2. 在瀏覽器,啓動一個定時器,它確實AJAX請求到「下載狀態URL」

  3. 創建此URL這需要從會話狀態,並把一個處理程序,爲JSON或一塊HTML發送給瀏覽器。

  4. 在AJAX處理程序的成功方法中,採用JSON/HTML並將其放入當前頁面。除非下載完成(這部分用JSON更簡單),重新啓動計時器。

+0

我的問題是特定於Django的。在本地當我做runserver時,我無法啓動另一個線程。 – philippe87

+0

當您收到請求時啓動線程。 –