2013-04-29 22 views
4

要訪問遠程數據存儲在本地使用原始dev_appserver提到heredevappserver2,remote_api的,和--default_partition

在2013年3月谷歌提出devappserver2默認的開發服務器我會成立--default_partition = S,和它不支持導致原本--default_partition,怕再:

BadRequestError: app s~appname cannot access app dev~appname's data 

它看起來像與

os.environ["APPLICATION_ID"] == 's~appname' 
0123送達正確的前幾個請求

然後後續請求導致對/ _ah /熱身打個電話,然後

os.environ["APPLICATION_ID"] == 'dev~appname' 

特別提到相關的主題,但出現面向dev_appserver here

警告的文檔!不要從環境變量中獲取App ID。開發服務器模擬生產App Engine服務。其中一種方法是將一個字符串(dev〜)預先加入到APPLICATION_ID環境變量中,這與使用高複製數據存儲區的應用程序在生產中預先添加的字符串類似。您可以使用--default_partition標誌修改此行爲,並選擇一個值「」來匹配生產中的主從選項。 Google建議您始終使用get_application_id()方法獲取應用程序標識,而不要使用APPLICATION_ID環境變量。

+0

非常沮喪。 – 2013-09-17 00:35:16

+1

在ver 1.8.4 SDK的google/appengine/tools/devappserver2/application_configuration.py,第84行中,它被硬編碼爲'dev'。如果我更改字符串,它對我有用。 – 2013-09-17 01:03:06

+0

謝謝[Kenji Noguchi](http://stackoverflow.com/users/622121/kenji-noguchi):) – mshameers 2013-10-10 05:20:52

回答

2

你可以做以下的骯髒的小把戲:

from google.appengine.datastore.entity_pb import Reference 

DEV = os.environ['SERVER_SOFTWARE'].startswith('Development') 

def myApp(*args): 
    return os.environ['APPLICATION_ID'].replace("dev~", "s~") 

if DEV: 
    Reference.app = myApp 
相關問題