2013-07-07 59 views
2

使用消息隊列時使用Django開發我的web應用程序,我面臨着一個問題,當我撥打本地一些功能是否正常運行,但一旦我把他們在HTTP請求他們沒有執行。 我一打聽,有人告訴我,異步執行他們用芹菜和消息隊列服務器的請求響應週期之外,它的工作很好,但我還是不明白,爲什麼我不得不異步即使我不執行一些任務有競爭條件,只有一個客戶端調用Web服務。 這對我來說是一個很大的黑點,因爲我沒有真正知道如何使它工作。 任何人都可以解釋給我看?爲什麼在Web應用程序

謝謝。

+0

你能展示一些代碼和你的問題嗎? – Jingo

+0

DEF排版(請求): P = subprocess.Popen([ '的javac',文件路徑],標準輸出= subprocess.PIPE,標準錯誤= subprocess.PIPE,BUFSIZE = 100) RES,ERR = p.communicate() 返回HttpResponse(err)當我通過http調用這個應用程序時,它不工作,直到我使用芹菜並且定義了一個任務,在請求/響應循環之外執行編譯 – user2099860

+0

使用dev服務器時它工作嗎? – Thomas

回答

1

我知道了基於隊列的系統的兩個主要好處是:

一,響應可以提供給客戶端,而不必等待工作要做。這可以讓頁面加載速度更快,而客戶端花更少的時間等待。

其次,隊列給你安排的作業多個工人可以借鑑的中心位置。如果應用程序的某個組件無法跟上工作量(或者由於某種原因導致失敗),則可以讓該組件的其他實例執行該工作,並且有一個地方所有需要完成的工作都可以找到。

+0

謝謝你的回答,但我要調用的函數是編譯一個.java文件,其中寫入了一個簡單的hello世界,我認爲這不是一個大量的工作,並且沒有理由失敗但是當它在本地調用時,它可以工作,當它處於請求/響應週期時,它不會 – user2099860

+0

@JPR回答您提問的問題。如果你真正想要的答案是「爲什麼這個函數不能通過HTTP工作,但是從芹菜調用時會起作用」,那麼你需要提出你的問題。 – Thomas

相關問題