尽管处于调试模式,但仍可以使用Bottle.py缓存模板

Jes*_*ugh 5 python google-app-engine templates caching bottle

我刚刚在GAE上构建了我的第一个Bottle.py应用程序.它的工作原理是,当我更改模板时,我必须重新启动开发服务器以查看更改.文档说,模板缓存应该在bottle.debug(True)时被禁用,并且你也可以调用bottle.TEMPLTE.clear(),但这些都不起作用.我也试过设置run(reloader = True),但这会导致错误.我究竟做错了什么?bottle.debug()是否适用于GAE上的任何其他人?

import bottle
bottle.debug(True)
bottle.TEMPLATES.clear()

@bottle.route('/')
def index(name='World'):
    return bottle.template('main')

bottle.run(server='gae')
Run Code Online (Sandbox Code Playgroud)

更新:我 没有使用bottle.run(server ='gae'),而是自己包含了标准的main()函数,现在它可以工作了.

def main():
  app = bottle.default_app()
  util.run_wsgi_app(app)

if __name__ == "__main__":
  main()
Run Code Online (Sandbox Code Playgroud)

BOY*_*YPT 0

Bottle/GAE doc介绍的标准方法是:

app = bottle.app()

然后调用dev_appserver.py,它会app.yaml从您定义的脚本中读取并导入您的应用程序,并处理 GAE 环境的所有其他内容。

您不应该直接运行 .py。从 Bottle 方式运行将跳过 dev_appserver 的那些句柄,包括模板缓存机制。当然,使用utilGoogle的方法确实有效,但是根据uwsgi或其他wsgi相关项目的文档,app脚本模块中的变量是应该提供给上层处理的对象。