两个问题:
Google App Engine是否会在将应用程序重新定位到其他服务器之前向应用程序发送任何类型的消息?
如果是,该消息是什么?
答案 0 :(得分:3)
不,它没有。它也没有重新定位,旧的实例继续运行(并且当空闲时间最终停止),同时产生新的实例。
答案 1 :(得分:1)
有时,App Engine需要将您的实例移动到其他计算机以改善负载分配。
当App Engine需要首先关闭手动扩展实例时 通知实例。有两种方法可以接收它 通知。首先,来自的is_shutting_down()方法 google.appengine.api.runtime开始返回true。第二,如果你 已经注册了一个关闭钩子,它将被调用。这是一个好主意 在您的启动请求中注册关闭挂钩。之后 发出通知,现有请求给出30秒 完成,新请求立即返回404。
如果是实例 处理请求时,App Engine暂停请求并运行 关机钩。如果没有活动请求,App Engine会发送一个 / _ah / stop请求,它运行关闭钩子。 / _ah / stop请求 绕过正常的处理逻辑,用户代码无法处理;它的 唯一的目的是调用关机钩子。如果你提出异常 在处理另一个请求时,在你的关闭钩子中,它会冒泡 进入请求,你可以抓住它。
以下代码示例演示了一个基本的关闭挂钩:
from google.appengine.api import apiproxy_stub_map
from google.appengine.api import runtime
def my_shutdown_hook():
apiproxy_stub_map.apiproxy.CancelApiCalls()
save_state()
# May want to raise an exception
runtime.set_shutdown_hook(my_shutdown_hook)
Alternatively, the following sample demonstrates how to use the is_shutting_down() method:
while more_work_to_do and not runtime.is_shutting_down():
do_some_work()
save_state()
此处有更多详情:https://developers.google.com/appengine/docs/python/modules/#Python_Instance_states