1
我有一個python CGI,它在後臺運行一些腳本並在html頁面顯示stdout。我在用戶點擊頁面中的某個按鈕時運行腳本。在CGI背景下運行python腳本
我的問題是當腳本開始運行頁面變得繁忙,並且用戶不能使用頁面中的其他客戶端功能。
我想要的是: 腳本應該在後臺運行,當用戶單擊按鈕時,應該在運行完成時通知CGI。然後,CGI顯示應該運行腳本的標準輸出。
如何才能做到這一點?
我有一個python CGI,它在後臺運行一些腳本並在html頁面顯示stdout。我在用戶點擊頁面中的某個按鈕時運行腳本。在CGI背景下運行python腳本
我的問題是當腳本開始運行頁面變得繁忙,並且用戶不能使用頁面中的其他客戶端功能。
我想要的是: 腳本應該在後臺運行,當用戶單擊按鈕時,應該在運行完成時通知CGI。然後,CGI顯示應該運行腳本的標準輸出。
如何才能做到這一點?
好吧,簡答:你不行。
中等答案:CGI很爛。
長答案:CGI通過運行腳本並返回腳本打印到瀏覽器的任何內容。如果您的腳本仍在運行,瀏覽器將會等待。如果您的腳本啓動後臺作業並將數據返回給瀏覽器,則後臺作業將無法通知CGI腳本,因爲它已完成。
您必須選擇備用解決方案。
將後臺作業的結果保存到文件,數據庫或其他持久性存儲中,並使用戶使用頁面中的另一個鏈接請求該數據,該鏈接運行不同的代碼以檢索保存的結果並顯示他們。
另一種方法是在瀏覽器中使用AJAX技術。編寫JavaScript代碼以對後臺數據做出請求。所以當腳本運行時,瀏覽器仍然可以響應其他頁面元素。
Thans nosklo。有沒有一種方法可以讓我的CGI在執行腳本時顯示一個加載圖標,而不僅僅是看起來很忙? – Cagey 2010-03-17 13:59:03
@Cagey:通常通過使用JavaScript來完成請求(AJAX)。 – nosklo 2010-03-18 03:01:47
感謝您的幫助nosklo。這非常有用:) – Cagey 2010-03-18 06:44:39