Google App 引擎需要定期重启
Google App engine needs periodic restarting
我有一个模块,当我将它推送到 App Engine 时工作正常。当它工作时,它会很好地记录内容,并且可以在控制台日志查看器中访问日志。但过了一会儿它就停止工作,当我尝试访问任何 url 时给我 500 个没有信息的服务器错误(它只是说等待 30 秒可能是个好主意)。发生这种情况时,不会记录任何请求。
如果我重新启动该模块(通过将我的代码推送到应用引擎),它会再次工作一段时间。
该模块是 运行 一个金字塔应用程序,配置文件看起来有点像:
application: my_app
module: my_module
version: dev
runtime: python27
api_version: 1
threadsafe: false
instance_class: B2
basic_scaling:
max_instances: 2
idle_timeout: 10m
handlers:
- url: /actions/.*
script: my_module.application
login: admin
- url: /.*
script: my_module.application
builtins:
- appstats: off
libraries:
- name: webob
version: latest
- name: setuptools
version: latest
includes:
- mapreduce/include.yaml
我认为发生的事情是它达到空闲超时并关闭。我需要请求模块重新打开它。我该怎么做?
如果您需要更多信息,请告诉我,我现阶段是应用引擎菜鸟。任何帮助将不胜感激。
即使达到空闲超时,AppEngine 也会在新请求进入时旋转一个新实例。
使用 Cloud Debugger 检查您的应用程序的状态。调试器可以更轻松地查看应用程序状态并了解您的应用程序 运行 一段时间后发生的情况。
当模块启动时,App Engine 调用 url /_ah/start。你不能处理这个请求。
在您 my_module.application 中,您需要添加匹配此请求的处理程序:
def get(self):
# Let module start
if "X-Appengine-Cron" in self.request.headers or "X-AppEngine-TaskName" in self.request.headers or "X-Appengine-Failfast" in self.request.headers:
return
查看有关启动状态的文档 https://cloud.google.com/appengine/docs/python/modules/#Python_Instance_states
如果您的处理程序可以优雅地处理 404,则您当前的默认处理程序 /.*
应该能够处理 /_ah/start
。
这就是我处理初创公司的方式。通过主处理程序,它可以使用未找到的默认金字塔处理不存在的 url 请求。
我有一个 config.add_notfound_view(notfound)
注册。
我有一个模块,当我将它推送到 App Engine 时工作正常。当它工作时,它会很好地记录内容,并且可以在控制台日志查看器中访问日志。但过了一会儿它就停止工作,当我尝试访问任何 url 时给我 500 个没有信息的服务器错误(它只是说等待 30 秒可能是个好主意)。发生这种情况时,不会记录任何请求。
如果我重新启动该模块(通过将我的代码推送到应用引擎),它会再次工作一段时间。
该模块是 运行 一个金字塔应用程序,配置文件看起来有点像:
application: my_app
module: my_module
version: dev
runtime: python27
api_version: 1
threadsafe: false
instance_class: B2
basic_scaling:
max_instances: 2
idle_timeout: 10m
handlers:
- url: /actions/.*
script: my_module.application
login: admin
- url: /.*
script: my_module.application
builtins:
- appstats: off
libraries:
- name: webob
version: latest
- name: setuptools
version: latest
includes:
- mapreduce/include.yaml
我认为发生的事情是它达到空闲超时并关闭。我需要请求模块重新打开它。我该怎么做?
如果您需要更多信息,请告诉我,我现阶段是应用引擎菜鸟。任何帮助将不胜感激。
即使达到空闲超时,AppEngine 也会在新请求进入时旋转一个新实例。
使用 Cloud Debugger 检查您的应用程序的状态。调试器可以更轻松地查看应用程序状态并了解您的应用程序 运行 一段时间后发生的情况。
当模块启动时,App Engine 调用 url /_ah/start。你不能处理这个请求。 在您 my_module.application 中,您需要添加匹配此请求的处理程序:
def get(self):
# Let module start
if "X-Appengine-Cron" in self.request.headers or "X-AppEngine-TaskName" in self.request.headers or "X-Appengine-Failfast" in self.request.headers:
return
查看有关启动状态的文档 https://cloud.google.com/appengine/docs/python/modules/#Python_Instance_states
如果您的处理程序可以优雅地处理 404,则您当前的默认处理程序 /.*
应该能够处理 /_ah/start
。
这就是我处理初创公司的方式。通过主处理程序,它可以使用未找到的默认金字塔处理不存在的 url 请求。
我有一个 config.add_notfound_view(notfound)
注册。