2013-10-24 45 views
0

任務是在後臺運行一個python腳本,並在提交請求時放置一個類似「您的腳本正在運行...稍後返回給您」的網頁,然後在運行結束時下載結果頁面。芹菜似乎是一個不錯的選擇,但它聽起來是一種矯枉過正,因爲只有一個腳本會在後端運行。在Django中有一個簡單的方法來處理它嗎?謝謝。在Django的後臺處理運行python腳本的好方法?

+0

到目前爲止你有嘗試過什麼嗎? – PepperoniPizza

+0

用戶是否停留在此頁面上,直到腳本完成?當用戶離開網站並返回時,頁面是否需要檢查後臺任務的狀態?像這樣的用例將決定您是否可以簡單地通過Ajax輪詢數據庫狀態更改,或者您是否需要更強大的功能。 – Brandon

+0

簡單的用例是呈現一個頁面,顯示腳本正在運行並在腳本完成時呈現另一個頁面。謝謝! – user2916490

回答

1

您可以使用python subprocess內置模塊。正確使用Popen對象,您可以啓動一個進程,通過Popen.poll()查看它的運行狀態,等待它完成Popen.wait()甚至與它通信或終止它。所以我想你可以在Django/Python中設置一個變量,設置爲False,每次當你登錄一個進程時,當這個變量爲False時,你可以在站點上顯示一個狀態,一旦完成,你將變量設置爲True並執行你的操作。

+0

如果您打開WSGI中的子進程並打開管道與其進行通信,只要請求終止,它就會被終止。 – vartec

+0

非常感謝!我想我理解子流程步驟。但在我看來,如何在運行時返回一頁來指示腳本狀態,並在結束時返回另一頁結果。我嘗試while循環,但它似乎不工作。 – user2916490