有没有办法直接向该服务器发送请求?
5 回答
实际上,有一种方法可以将新数据推送到应用程序的所有实例。
from google.appengine.api import modules
instance_id = modules.get_current_instance_id()
出于什么目的?
如果要测试不同的版本,可以使用流量拆分https://developers.google.com/appengine/docs/adminconsole/trafficsplitting
那是不同的版本,而不是特定的实例。
不,没有。
通常当有人问这样的问题时,他们在应用引擎上的方向是错误的。前端服务器一直在启动和关闭。如果您正在设计任何依赖于特定实例的东西,那么您做错了。无论遇到什么实例,您都需要设计能够正常工作的请求。
如果必须这样做,请考虑使用后端。
With the advent of Modules, you can get the current instance id in a more elegant way:
ModulesServiceFactory.getModulesService().getCurrentInstanceId()
Also, according to this doc, you can route requests specifically to a particular instance by using a URL like
http://instance.version.module.app-id.appspot.com
Note that you need to replace the dot with -dot-
to suppress the SSL certificate warning your web client may be complaining about:
http://instance-dot-version-dot-module-dot-app-id.appspot.com
我使用 Python 和日期时间戳来识别实例。此实例 ID 由 appengine_config.py 设置。为了向其他实例发出信号,我在 memcache 中使用了一个标志,由__init__
我的 webapp2 请求处理程序检查。我使用其他实例的信号来刷新 jinja 环境并重新加载动态 python 代码,因为我找不到其他方法。
这是内存缓存标志的示例;发出重新加载所有动态模块的信号,这些模块已由实例 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'}}
我主演了来自 Ibrahim Arief 的功能请求