App 引擎“模块”是 App Engine 中的一项新功能(实验性且名称容易混淆):https ://developers.google.com/appengine/docs/python/modules 。正在敦促开发人员将“后端”功能的使用转换为使用此新功能。
似乎有两种方法可以启动模块的实例:向它发送 HTTP 请求(即应用程序和模块http://modulename.appname.appspot.com
的at ),或调用.appname
modulename
google.appengine.api.modules.start_module()
简单的方法
启动模块实例的简单方法似乎是创建一个 HTTP 请求。但是,在我的情况下,这只会导致两种结果,这两种结果都不是我想要的:
如果我使用我的应用程序定义的后端名称,即
http://backend.appname.appspot.com
,请求被正确路由到后端并被正确拒绝(因为后端访问默认定义为私有)。其他任何事情都会导致请求被路由到默认模块的唯一前端实例,即使使用随机字符串作为模块名称,例如
http://sdlsdjfsldfsdf.appname.appspot.com
. 这甚至适用于虚构的实例 ID,例如http://99.sdlsdjfsldfsdf.appname.appspot.com
等。当然(这是问题)也适用于我的模块的实际名称。
通过 API 启动
文档说start_module()
使用模块名称和版本调用应该会导致指定模块的指定版本启动。但是,UnexpectedStateError
每当我使用有效参数调用此函数时,我都会得到一个。
不幸的事态
因为我无法让它工作,所以我想知道文档可能没有提到一些微妙之处。我的设置非常简单,所以我想知道这是否是一个普遍存在的问题,有人已经找到了解决方案。