2012-02-14 59 views
3

我正在使用Python 2.7運行時與NDB從谷歌App Engine上的1.6.2 SDK。BadRequestError:應用程序s〜myapphr無法訪問應用程序dev〜myapphr的數據。爲什麼?

我收到以下錯誤:

BadRequestError:

device = model.Key(urlsafe=device_id).get() 

我從開發訪問我的應用程序:應用程序S〜myapphr不能從這個代碼中訪問應用開發〜myapphr的數據

起源.myapp.appspot.com是myapphr的別名。 device_id是在同一個dev.myapphr版本上創建的。

這是怎麼回事?

回答

3

dev服務器的默認default_partition爲'dev',在生產中,HRD應用程序得到's'分區。如果您在dev服務器上創建了一個urlsafe密鑰並將其作爲字符串存儲,它將無法在具有不同分區的生產服務器上運行。使鍵可移植的方式是將它們保存在ndb上的帶有db或KeyProperty的ReferenceProperty中。

3

您看到的前綴(「s〜」和「dev〜」)稱爲分區。您可以使用dev_appserver.py的--default_partition標誌將前綴從「dev〜」更改爲「s〜」。

+0

謝謝。讓我感到困惑的是,我把我的開發版本稱爲生產版本,並認爲這與它有關。 – Dan 2012-02-14 17:55:28

+0

另請注意,如果使用GoogleAppEngineLauncher,則可以在右鍵菜單中的「Info ...」中設置此--default_partition。 – Bemmu 2012-06-01 04:21:30

+3

請注意,這是[從v1.7.6開始棄用](https://developers.google.com/appengine/docs/python/tools/old_devserver)。 – OJFord 2014-09-18 20:59:14

相關問題