Google App Engine中的Jinja2

12 投票
3 回答
6379 浏览
提问于 2025-04-15 19:55

我开始在 Google App Engine 上使用 Jinja2 作为我的模板引擎(用 Python 编写)。

我想问的是:字节码缓存在生产环境中能正常工作吗?在开发服务器上它运行得很好,但我看到有地方说字节码缓存依赖于 marshal 模块,而这个模块在 App Engine 上不支持。这个回答 提供了一个可能的解决方案,就是把 marshal 换成 pickle 方法。有人试过这个吗?

总的来说,在使用 Jinja2 和 App Engine 时,还有什么其他需要考虑的事情吗?

任何帮助都将不胜感激!

谢谢。

3 个回答

1

根据Python 2.7的新特性文档,在Python 2.7中,你可以上传 .pyc 文件。

可以上传 .pyc 文件,但不能和 .py 文件一起上传。不过,你可以上传包含 .py 或 .pyc 文件(或者两者都有)的 .zip 文件。

9

Jinja2现在已经包含在GAE(Google App Engine)中了。显然,你需要把你的应用程序迁移到Python 2.7版本。

在app.yaml文件中添加

libraries:
- name: jinja2
  version: "2.6"

这里是这个信息的来源: http://blog.notdot.net/2011/11/Migrating-to-Python-2-7-part-2-Webapp-and-templates

12

Rodrigo Moraes 为 Jinja2 在 Google App Engine(GAE)下创建了一些特别的加载器,详细信息可以查看 这里。这些加载器并不是用来缓存字节码的,而是将所有模板预先编译成 Python 代码,这样可以避免 Jinja2 解析时的额外开销。

需要注意的是(来自 这个 GAE 页面):

编译后的应用代码会被缓存,以便快速响应网络请求。

撰写回答