2012-10-08 55 views
2

在App Engine上運行Python Web應用程序時,我們需要設置一些機制以在應用程序初始化之前(或期間)執行一些代碼。這意味着,在最佳解決方案中,我們需要運行的代碼儘早執行。這樣做的目的是允許在訪問本地數據存儲之前初始化App Engine remote_api,以防止數據存儲訪問衝突。在App Engine應用程序初始化時執行代碼

這是什麼,我們正在尋找一個非常粗略的例子:

imports (including remote_api) 

def some_initialization_function_or_similar (args): 
    some_init_function_calls(...) 

    setup_remote_api(...) 

    access_datastore_the_first_time(...) 

請把這個問題作爲參考方案我們正在尋找:Using GAE remote api for debugging from localhost - Connecting too late?

+0

爲什麼你需要這個?瞭解用例而非單獨抽象情況的參考可能會有所幫助,並可能導致其他不需要此類解決方案的想法。檢出源代碼(http://code.google.com/p/googleappengine/source/browse/trunk/python/dev_appserver.py)也可能有幫助。 – bossylobster

+0

@bossylobster我們需要使用remote_api進行本地數據庫訪問,以幫助我們調試一些使用情況,否則這些情況會過於昂貴或難以實現。我們已經測試了遠程api函數,所以我們可以**從遠程數據存儲中檢索數據,但是當將數據寫入WSGI應用程序的響應時,我們會得到一個我們認爲與數據存儲衝突有關的錯誤。 –

+0

如果要檢查本地數據存儲,請導航到「http:// localhost:PORT/_ah/admin/interactive」,其中「PORT」是您用於本地應用服務器的端口。您可以針對應用程序執行任意代碼。 – bossylobster

回答

3

假設你有一個單一的入口點(在app.yaml中命名的腳本),您可以在導入之後但在調用main()函數之前調用所需的代碼。這意味着它只會在主腳本被導入時才運行,這隻在第一個請求上(到達該入口點)。

如果您有多個入口點,請嘗試將它放在appengine_config.py中。很快就會加載。

+0

謝謝,圭多。 appengine_config.py位於哪裏? –

+0

在您的應用程序的根目錄中。 – bossylobster

+0

當我將遠程api初始化代碼添加到appengine_config.py時,出現此錯誤:第79行中的文件C:\ Program Files(x86)\ Google \ google_appengine \ google \ appengine \ tools \ dev_appserver_blobstore.py GetBlobStorage return apiproxy_stub_map.apiproxy.GetStub('blobstore')。storage AttributeError:'RemoteStub'對象沒有'storage'的屬性 –

相關問題