2011-11-23 77 views
3

有人可以举例暖机入站服务如何在Google App Engine的Python运行时工作吗?热身服务如何在Python谷歌应用程序引擎中工作?

我读过这样的:http://code.google.com/appengine/docs/python/config/appconfig.html#Inbound_Services,但它并没有给我太多的例子的GET请求被发送后(我似乎不能永远把它捡起来)

我的长相的app.yaml像这样:

application: whatevs 
version: 1 
runtime: python 
api_version: 1 

builtins: 
- datastore_admin: on 

inbound_services: 
- warmup 

handlers: 
- url: /static 
    static_dir: static 

- url: /_ah/warmup 
    script: main.py 
    login: admin 

- url: /.* 
    script: main.py 

我main.py看起来是这样的:

def main(): 
    application = webapp.WSGIApplication(
        [("/", views.LandingPage), 
         ("/_ah/warmup", views.WarmupHandler) 
         ], 
        debug=True) 
    run_wsgi_app(application) 

WarmupHandler看起来是这样的:

class WarmupHandler(webapp.RequestHandler): 
    """ 
    Called on app init 
    """ 
    def get(self): 
     current_user = users.get_current_user() 
     return 

但是,WarmupHandler似乎永远不会被调用(我有断点和大量的调试代码)。我究竟做错了什么?

+0

什么调试代码?你不会在这里显示。你怎么调试它?你确定你的断点受到打击吗? –

+0

好点,尼克。原来我误解了'暖身'的预期功能,正如Teemu指出的那样。所以,不保证被触发。这就解释了为什么我的处理程序从未被击中 –

回答

1

仅当您的应用有一些持续流量时,App引擎才会发送预热请求。如果实例处于空闲状态,它将不会始终被调用。

+0

谢谢Teemu。每次应用程序“启动”时都会执行类似于预热的操作吗?我想我可以在第一时间手动调用我自己的管理处理程序。 –

+0

你可以写main.py这样的: 应用= webapp.WSGIApplication(...) <在这里添加初始化SUFF>() DEF主: run_wsgi_app(应用程序)只执行一次 主外一切。 –

+0

好点。我正在寻找只执行应用程序部署/启动的'第一次'的事情。我想只有一个手动启动的仅管理员处理程序比较容易。您关于热身功能的观点虽然回答了我(和其他人)的问题,但非常感谢。 –