2010-03-17 130 views
1

我有一個python CGI,它在後臺運行一些腳本並在html頁面顯示stdout。我在用戶點擊頁面中的某個按鈕時運行腳本。在CGI背景下運行python腳本

我的問題是當腳本開始運行頁面變得繁忙,並且用戶不能使用頁面中的其他客戶端功能。

我想要的是: 腳本應該在後臺運行,當用戶單擊按鈕時,應該在運行完成時通知CGI。然後,CGI顯示應該運行腳本的標準輸出。

如何才能做到這一點?

回答

2

好吧,簡答:你不行。

中等答案:CGI很爛。

長答案:CGI通過運行腳本並返回腳本打印到瀏覽器的任何內容。如果您的腳本仍在運行,瀏覽器將會等待。如果您的腳本啓動後臺作業並將數據返回給瀏覽器,則後臺作業將無法通知CGI腳本,因爲它已完成。

您必須選擇備用解決方案。

將後臺作業的結果保存到文件,數據庫或其他持久性存儲中,並使用戶使用頁面中的另一個鏈接請求該數據,該鏈接運行不同的代碼以檢索保存的結果並顯示他們。

另一種方法是在瀏覽器中使用AJAX技術。編寫JavaScript代碼以對後臺數據做出請求。所以當腳本運行時,瀏覽器仍然可以響應其他頁面元素。

+0

Thans nosklo。有沒有一種方法可以讓我的CGI在執行腳本時顯示一個加載圖標,而不僅僅是看起來很忙? – Cagey 2010-03-17 13:59:03

+0

@Cagey:通常通過使用JavaScript來完成請求(AJAX)。 – nosklo 2010-03-18 03:01:47

+0

感謝您的幫助nosklo。這非常有用:) – Cagey 2010-03-18 06:44:39