2016-06-17 31 views
0

我目前有一個很大的django項目。在視圖中,我做了一個在視圖之間共享的大型計算,以節省後續請求的時間。爲了激活站點,我有一個python腳本,它通過manage.py啓動了一些腳本,例如創建符號鏈接,收集靜態文件等。當每個命令運行時,它會加載項目中的所有應用程序,其中做這個大計算。我想阻止這一點。理想情況下,我希望預激計算在激活時只發生一次。我想我需要:Django在視圖中的預計算

  1. 防止manage.py從實際加載視圖(不知道這是可能的)
  2. 懶洋洋地初始化計算(不理想的,因爲第一人稱請求種源將採取多分鐘)

我的選擇是什麼?任何幫助表示讚賞!

回答

0

您可以使用AppConfig的這一點,更具體AppConfig.ready()

參見如何做到這一點這SO answer或文件。

編輯:

一種選擇是從Django的外殼手動運行的腳本。您可以在終端中輸入python manage.py shell來完成此操作。然後,您可以導入模型,視圖和類似的shell並執行腳本或函數。

另一種選擇是將計算綁定到不用於其他任何事情的視圖,並添加一個url-path來運行此函數。然後你可以手動去這個URL並且計算將被運行。

這些方法合適嗎?

+0

這是我第一次嘗試,但每次運行manage.py它都會創建一個新的AppConfig,並且AppConfig.ready()將運行。 – Championcake