2012-08-29 42 views
0

我一直在寫一些django項目/應用程序,啓動一些測試腳本。我以前問過關於如何在此處執行此操作的問題。integrating python scripts with django提交表單掛起,直到初始化過程完成

我碰到了一個我不認爲會發生的問題。我有一個表單工作,使用jquery顯示特定的複選框,這些複選框傳遞的值將啓動一個API到我正在測試的應用程序。完全像我最初的問題中的代碼。然而,當我提交表單,表單掛而後端處理完成

submittest.initialise_test(t_start, t_templatename, t_datacenter) 

return render_to_response('testsubmitted.html') 

我知道我可以使用一個或POPEN cron的,但我已經寫我的應用程序,它會採取一些重新設計。

任何想法如何讓submittest.initialise_test(t_start,t_templatename,t_datacenter)成爲異步調用或解決此問題的方法?結果被寫入數據庫,然後我希望使用該數據庫使用ajax呈現結果頁面以更新結果。

+0

你可以嘗試產生新的線程http://docs.python.org/library/thread.html#module-thread – Rohan

+0

謝謝 - 我一直在讀這個..我只是不想要任何產生的線程這是保持開放,但我一定會考慮這..可能是一個簡單的選擇 – Oli

+0

其實這工作,我沒有在最後使用消息隊列。我所做的只是導入線程,然後將submittest.intialise_test(t_start,t_templatename,t_datacenter) 更改爲thread.start_new_thread(submittest.intialise_test,(t_start,t_templatename,t_datacenter)) – Oli

回答

1

您可以使用衆多django background queue apps之一在後臺進程中運行任務。

+0

是的,我想到了。我會看看,看看有什麼選擇..我有一種感覺,這將是一個大的應用程序重寫雖然 – Oli

+0

嗯,我不知道你的代碼,所以我不能說...但如果它是乾淨的那麼你應該找到一個快速的方法。不要試圖在任務定義中添加太多的代碼,而是嘗試使任務調用代碼在應用程序中正確分解出來(這樣您就可以在有或沒有任務的情況下使用該代碼)。 – jpic

+0

當然 - 謝謝你的建議。我的應用程序大約有7000行代碼。我已經使用類來定義不同的功能,並在django的應用程序中分割這些類。即,API調用一個應用程序,另一個應用程序中的表單和視圖,另一個應用程序中的db調用。但總而言之,所有這些呼籲都是很難做到的。然而,對apis的呼叫是我需要啓動任務的地方,所以也許它不會那麼糟糕。我只是將這些任務放在隊列中進行輪詢。理論上這就是 – Oli

相關問題