2010-02-12 12 views

回答

4

我用django助手使用appengine python。據我所知,你不能在部署上掛鉤任何東西,但你可以打一個電話來檢查你是否需要在main.py的main函數中進行設置。這就是助手如何在第一次請求時初始化自己。我有一段時間沒有看過webapp,但我認爲main.py對該框架採取了類似的方式。

請注意,main在第一個請求上運行,而不是在第一次部署時運行。如果appengine啓動一個新實例來處理負載,或者如果所有實例都由於不活動而停止,它也會發生。因此,請確保您檢查是否需要執行初始化,然後只在需要時才執行。

+0

謝謝,效果很好! – fredrik 2010-02-15 09:02:28

+0

這個解決方案是迄今爲止我發現的最好的解決方案,但它只適用於「在服務器啓動時」,而不是「部署時」。有段時間沒有人請求您的應用程序,因此運行程序的實例可能會「卸載」它。當用戶出現時,實例會重新載入程序,並說「此請求導致您的應用程序啓動一個新進程,從而導致您的應用程序代碼第一次加載。因此,這個請求可能需要更長的時間,並且比使用應用程序的典型請求使用更多的CPU。「如果您只有部署時需要計算的數據,它將在重新加載時重新計算 – gentimouton 2012-07-05 23:27:08

2

您可以通過寫你最喜歡的腳本語言的腳本執行,你的願望的行動,然後做這個運行開發服務器或運行appcfg.py更新。

+0

嗯,不是真的我以後。我想要另一種方式。我希望服務器在啓動時忽略腳本。 – fredrik 2010-02-12 15:19:03

+0

我很抱歉,這不是你想要的,但它會起作用。您的其他選項是黑客dev_appserver.py或將代碼放入AppEngine應用程序的主要功能。第一種選擇是一個可怕的想法,因爲你實際上不想分支AppEngine框架,每次安裝新版本的AppEngine時,你的改變都會丟失。技術上,第二個選項在服務器啓動後運行,並且在部署到生產環境時也可能會中斷。我不想簡單地回答你的問題「不」,所以我給了你一個選擇。 – 2010-02-12 15:45:44

1

嘗試圍繞運行部署的服務器運行器和腳本進行封裝。因此,您可以在需要時運行自定義代碼。

相關問題