有没有办法直接向该服务器发送请求?
答案 0 :(得分:7)
实际上有一种方法可以将新数据推送到应用程序的所有实例。
from google.appengine.api import modules
instance_id = modules.get_current_instance_id()
答案 1 :(得分:1)
出于什么目的?
如果您要测试不同的版本,可以使用流量分割https://developers.google.com/appengine/docs/adminconsole/trafficsplitting
但这是不同的版本,而不是特定的实例。
答案 2 :(得分:1)
没有。
通常当有人问起这样的事情时,他们会在app引擎上走向错误的方向。前端服务器始终启动和关闭。如果您正在设计依赖于特定实例的任何内容,那么您做错了。无论他们遇到什么样的实例,您都需要设计有效的请求。
如果必须这样做,请考虑使用后端。
答案 3 :(得分:0)
我使用Python和日期时间戳来标识实例。此实例标识由appengine_config.py设置。为了通知其他实例,我在memcache中使用了一个标志,该标志由我的webapp2请求处理程序的__init__
检查。
我使用信号到其他实例来刷新jinja环境并重新加载动态python代码,因为我找不到另一种方法。
这是一个memcache标志的例子;信令重新加载所有动态模块,这些模块已由实例ID设置:'2012-12-26 16:39:50.072000'
{ u'_all': { u'dyn_reloads_dt': datetime.datetime(2012, 12, 26, 16, 39, 59, 120000),
u'setter_instance': '2012-12-26 16:39:50.072000'}}
我主演了feature request:Ibrahim Arief
答案 4 :(得分:0)
随着Modules的出现,您可以在a more elegant way中获取当前实例ID:
ModulesServiceFactory.getModulesService().getCurrentInstanceId()
此外,根据this doc,您可以使用类似
的URL将请求专门路由到特定实例 http://instance.version.module.app-id.appspot.com
请注意,您需要使用-dot-
替换该点以取消您的网络客户端可能抱怨的SSL证书警告:
http://instance-dot-version-dot-module-dot-app-id.appspot.com