devappserver2,remote_api的,和--default_partition(dev

2019-09-01 10:27发布

访问远程数据存储在本地使用原始dev_appserver提到我会成立--default_partition = S 这里

在2013年3月谷歌提出devappserver2默认的开发服务器,它不支持--default_partition造成原有的,可怕的:

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

它看起来像前几个请求与送达正确

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

然后随后的请求导致一个呼叫/ _ah /预热,然后

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

该文档特别提到相关话题,但出现面向dev_appserver 这里

警告! 不要从环境变量获得一个App ID。 开发服务器模拟生产App Engine服务。 在它这样做的一个方法是在前面加上一个字符串(DEV〜)到APPLICATION_ID环境变量,这类似于在生产中前置使用高复制数据存储应用中的字符串。 您可以修改此行为与--default_partition标志,选择的“”要匹配的值在生产主从选项。 谷歌建议使用get_application_id()方法总是得到应用ID,从不使用APPLICATION_ID环境变量。

Answer 1:

你可以做下面的肮脏小窍门:

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


文章来源: devappserver2, remote_api, and --default_partition