2017-08-05 132 views
0

這裏有很多信息,說實話,這有點太過消化,我有點失落。Django與多臺服務器通話

我的網絡應用程序必須這樣做一些非常耗費資源的任務。標準安裝現在在另一臺主機上的服務器靜態/媒體上應用。我想要做的就是設置芹菜,因此我可以撥打task.delay來完成這些資源密集型任務。

  • 我想將整個獨立服務器的資源專用於這些資源密集型任務。

這裏的問題:如何這樣做我設置芹菜,這樣從我的主服務器(其中應用程序託管)爲.delay的調用從應用程序發送到這些服務器?

注意:這些函數將踢數據返回到數據庫/影響模型,因此數據完整性在這裏很重要。那麼,如何將檢索到的數據(假設上述是可能的)從單獨的服務器發送回數據庫,同時保持完整性?

  1. 這是可能的,如果是這樣,我會開始 - 信息過載?
  2. 如果不是我該做什麼/我做錯了什麼?

回答

1

芹菜的要點就是要以這種方式工作,即作爲一個分佈式任務服務器。您可以根據需要在任意多臺機器上啓動工人,而經紀人(即rabbitmq)將根據需要分發這些工人。

雖然我不確定你對數據完整性有什麼要求。數據不會被「發回」到數據庫;工作人員以與Django其餘代碼完全相同的方式直接連接到數據庫。

+0

右鍵應該澄清它是「讓工人旋轉......」在不同的機器上,我遇到了麻煩。我是否將每個特定應用/任務的代理設置爲指向此服務器?至於數據...一個cron作業將會運行抓取數據來更新模型,並且抓取的初始數據也將被延期。我的意思是傳遞一個模型實例,然後調用delay來通過芹菜任務更新它會成爲一個問題。 –

+0

我還不是很確定你在問什麼。您沒有針對特定應用的經紀商;你有一個經紀人和多個工人,但是每個工人通常都有一個完整的代碼副本,並且可以運行任何任務。在數據上,你不應該傳遞實例,而是ID;你的任務代碼將通過id從db獲取實例,更新它,然後將其保存回去。 –

+0

感謝您的建議。你會鏈接到設置經紀人和工作人員的參考/教程嗎?從問題/評論中可能很明顯不知道我在做什麼。 –