我正在尝试将现有的Flask应用程序移植到Google App Engine中。经过大量阅读和解决问题之后,我遇到了一个完全困扰的问题:
在本地环境上启动应用程序后,出现以下错误消息:
简洁版本:
{% extends "base.html" %} OSError: [Errno 38] Function not implemented
如何无法实现此功能?它是flask / jinja2的一部分。
较长版本:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>500 Internal Server Error</title> <h1>Internal Server Error</h1> <p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.</p> ERROR 2013-06-17 14:26:42,772 app.py:1306] Exception on / [GET] Traceback (most recent call last): File "/home/kave/eclipse/F11/Engineering/flask/app.py", line 1687, in wsgi_app response = self.full_dispatch_request() File "/home/kave/eclipse/F11/Engineering/flask/app.py", line 1360, in full_dispatch_request rv = self.handle_user_exception(e) File "/home/kave/eclipse/F11/Engineering/flask/app.py", line 1358, in full_dispatch_request rv = self.dispatch_request() File "/home/kave/eclipse/F11/Engineering/flask/app.py", line 1344, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/home/kave/eclipse/F11/Engineering/f11_app/views.py", line 28, in index return render_template('index.html') File "/home/kave/eclipse/F11/Engineering/flask/templating.py", line 125, in render_template context, ctx.app) File "/home/kave/eclipse/F11/Engineering/flask/templating.py", line 107, in _render rv = template.render(context) File "/home/kave/eclipse/F11/Engineering/jinja2/environment.py", line 969, in render return self.environment.handle_exception(exc_info, True) File "/home/kave/eclipse/F11/Engineering/jinja2/environment.py", line 742, in handle_exception reraise(exc_type, exc_value, tb) File "/home/kave/eclipse/F11/Engineering/f11_app/templates/index.html", line 1, in top-level template code {% extends "base.html" %} OSError: [Errno 38] Function not implemented INFO 2013-06-17 14:26:42,799 server.py:593] default: "GET / HTTP/1.1" 500 291
知道这可能是什么吗?非常感谢
出现此错误是因为Jinja不了解assets模板中使用的标记。第二个问题是该项目应该在带有webassetPython库的GAE上运行。但是默认情况下它不起作用,因为webassets需要输出文件夹来存储压缩的静态文件,并且违反GAE托管逻辑。
assets
webassetPython
webassets
解决方案很简单:webassets在上传到GAE之前不要实时使用和压缩静态文件。