2011-07-07 40 views
0

我有幾個視圖函數處理來自遠程數據源的數據。在很多情況下,這個處理可能需要一秒鐘才能完成。同時訪問這些視圖功能是否會潛在地擾亂我的數據?Django認爲線程安全?

此外,我將有一個連續運行的後臺線程將填充我的數據庫。這個後臺線程將調用我的視圖函數將調用的一些相同的庫函數。這是一個潛在的線程安全問題嗎?

如果是,那麼最佳做法是什麼?我假設只是使用Python的鎖定機制將工作,但有沒有更好的方法?

謝謝!

-Travis

+0

您使用的是什麼webserver?它使用什麼進程/線程模型來運行Django應用程序? –

回答

0

對於長時間運行的進程,使用Celery

從長遠來看,您可以創建一個模型實例,並啓動一個用來填充它的芹菜任務。一個視圖可以顯示這個實例的狀態,用自我刷新的html直到結果出現。

0

我沒有看到你在那裏做任何明顯會導致線程問題的事情。線程安全更類似於如果想要並行處理單個請求,那麼您必須確保線程安全的一個請求的多個線程。

在你的情況下,每個請求正在訪問數據並將獲得它自己的副本。

0

您正在從遠程來源讀取/寫入數據。我會嘗試在這些遠程來源同步訪問或使用事務,而不是在客戶端!