要使用原始dev_appserver在本地访问远程数据存储区,我将设置--default_partition = s,如上所述here
2013年3月,Google将devappserver2作为默认开发服务器,并且它不支持--default_partition导致原始的,可怕的:
BadRequestError: app s~appname cannot access app dev~appname's data
似乎前几个请求与
一起正确提供os.environ["APPLICATION_ID"] == 's~appname'
然后后续请求会调用/ _ah / warmup然后
os.environ["APPLICATION_ID"] == 'dev~appname'
文档特别提及相关主题,但似乎适合dev_appserver here
警告!不要从环境变量中获取App ID。开发服务器模拟生产App Engine服务。执行此操作的一种方法是在APPLICATION_ID环境变量前添加一个字符串(dev~),该变量类似于使用High Replication数据存储区的应用程序在生产中预先设置的字符串。您可以使用--default_partition标志修改此行为,选择值“”以匹配生产中的主从选项。 Google建议始终使用get_application_id()方法获取应用程序ID,并且永远不要使用APPLICATION_ID环境变量。
答案 0 :(得分: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