2013-11-22 33 views
2

我正在閱讀Django Celery的this tutorial,我在想,因爲Django是一個Web開發框架,Celery實際上將用於排列Web開發中的任務嗎?Django中使用芹菜的地方?

使用示例給出您的建議。

+0

任何長期運行的工作,不可能在Web請求做。 –

+0

@SimeonVisser - 像什麼?請提供任何實際的示例。謝謝 –

回答

0

基本上,任何不是都有發生在典型的請求 - 響應Web應用程序週期中。

目標通常是通過在後臺執行這些任務來提高性能。

舉幾個例子:

  • 發送通知郵件。
  • 更新或無效非關鍵緩存
  • 調用外部Web服務
+0

糾正我,如果我錯了。比方說,如果我從網頁上請求'a','b'和'c',並且處理這些變量需要很長時間。獨立的功能正在處理每個變量的處理。所以,通常我會這樣做,'a = a_funct()''b = b_funct()'和'c = c_funct()'。相反,我應該在這些函數上使用芹菜,這樣我就不必等待'a's'響應繼續b和c,而是所有函數都應該異步運行。我對麼? –

+0

其次,我如何在'更新或使非關鍵緩存失效'上使用芹菜? –

+0

@prafulbagai這不是芹菜的用例。在請求你的頁面觸發一個在響應中不需要但是必須發生的動作時,你可以使用Celery。這裏有一個例子:用戶訂閱你的郵件列表。您無需向他們發送歡迎電子郵件,然後您可以返回回覆:「確定,您已訂閱」。因此,你在做什麼,你在Celery中創建一個異步任務來發送郵件,並返回「確定你訂閱了」。用戶現在收到HTTP響應,並在Celery處理任務時收到電子郵件。 –