如何让appstats在GAE上使用webapp2和扩展路由?

时间:2012-12-10 04:35:48

标签: google-app-engine python-2.7 webapp2 appstats

我正在尝试让Appstats使用我的GAE Python应用程序。我正在使用带有python 2.7的webapp2。

我已按照https://developers.google.com/appengine/docs/python/tools/appstats#Setup中的说明操作,其中包括创建appengine_config.py文件:

def webapp_add_wsgi_middleware(app):
    from google.appengine.ext.appstats import recording
    app = recording.appstats_wsgi_middleware(app)
    return app

将以下行添加到我的app.yaml:

builtins:
- appstats: on

我希望使用Appstats的python app看起来像这样:

import webapp2
from google.appengine.api import urlfetch
from google.appengine.ext import db
import appengine_config

class MainHandler(webapp2.RequestHandler):
    def get(self):
        self.response.write('Hello word!')

app = webapp2.WSGIApplication([
    webapp2.Route(r'/method1/', handler=Method1, name='method1'),
    webapp2.Route(r'/method2/', handler=Method2, name='method2'),
    webapp2.Route(r'/', handler=MainHandler, name='home')
], debug=True)

(我在阅读Appstats are only working for one WSGIApplication的评论后尝试了import appengine_config,但这两项都不起作用。

我遇到的问题是我可以在/_ah/stats看到appstats控制台,但即使在向应用程序发出许多请求之后,它也没有录制任何内容。

我想知道它是否与我正在使用扩展URL路由这一事实有关?我真的很想使用webapps2扩展路由,所以我希望Appstats没有问题。如果有人对我做错了什么有任何见解,那将真的有帮助!

提前感谢加载!

2 个答案:

答案 0 :(得分:2)

也许这会有所帮助:

1)我只在app.yaml中配置:

builtins:
- appstats: on

2)和appengine_config.py:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

def webapp_add_wsgi_middleware(app):                    
    from google.appengine.ext.appstats import recording
    app = recording.appstats_wsgi_middleware(app)
    return app

3)我没有必要改变我的处理程序或路由。

答案 1 :(得分:0)

经过多次调查后发现,我的问题的答案是一个粗心的错误。我以某种方式在子文件夹而不是根文件夹中创建了appengine_config.py文件,我没有注意到它,因为我一直在使用IDE。

所以如果有人遇到这个问题,请确保:

  1. appengine_config.py位于根文件夹
  2. appengine_config.py包含上述代码
  3. app.yaml包含appstats: on builtins:(如果您可以访问/_ah/stats,则此部分配置正确)
  4. 它应该有效。 :)