我正在使用 App Engine python 托管应用程序,并且喜欢使用 Appstats 和其他几个作为中间件运行的库。但是,当我通过 appengine_config.py(如下所示)设置中间件时,它可以在开发服务器上运行,但不能在生产服务器上运行。 Appstats 和 gaesessions 在开发服务器中工作得很好,在生产中根本不起作用。这是我的 appengine_config.py,位于我的根/src 目录中:
from com.impactpy.gaesessions import SessionMiddleware
COOKIE_KEY = 'nice try'
def webapp_add_wsgi_middleware(app):
from google.appengine.ext.appstats import recording
app = SessionMiddleware(app, cookie_key=COOKIE_KEY)
app = recording.appstats_wsgi_middleware(app)
return app
有什么想法吗?
更新
所以我将其备份,因为我再次尝试修复它但无济于事。我将 appengine_config.py 简化为:
from google.appengine.ext.appstats import recording
def webapp_add_wsgi_middleware(app):
app = recording.appstats_wsgi_middleware(app)
return app
和 app.yaml 包括
builtins:
- datastore_admin: on
- remote_api: on
- appstats: on
我的应用程序使用基本的网络应用程序,每个请求处理文件的底部包括:
application = webapp.WSGIApplication( [
('/handler', myHandlerClass)
],debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
部署工作正常。应用程序已经运行了一年多,收到了很多请求。 myapp.appspot.com/_ah/stats 显示带有刷新按钮的 GUI,没有数据,消息“尚未记录任何请求”等。我很困惑!
最佳答案
我认为问题在于您如何导入 SessionMiddleware。尝试将 gaesessions 放在项目目录的顶层。
这是我成功使用的appengine_config.py
:
from gaesessions import SessionMiddleware
from google.appengine.ext.appstats import recording
def webapp_add_wsgi_middleware(app):
app = SessionMiddleware(app, cookie_key="s3cr3t")
app = recording.appstats_wsgi_middleware(app)
return app
关于python - App Engine(python)在生产中跳过 webapp 中间件(如 Appstats),但在开发服务器上运行良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3349147/