我在nginx + uwsgi上运行一个烧瓶服务器。当我通过python server.py
运行烧瓶服务器时,我可以在我的jinja2模板中使用id_encode
函数,不会抛出任何错误。
但是,当我通过
启动(server.py)时 uwsgi --socket 0.0.0.0:8002 --module server --callab app
它会崩溃,说它无法找到函数id_encode
。
jinja2.exceptions.UndefinedError: 'id_encode' is undefined
通过声明:
if __name__ == '__main__':
app.jinja_env.globals.update(id_encode=id_encode)
app.run(host=host,port=5000, debug=True)
导致此问题的原因是什么?如何使该功能可用?
答案 0 :(得分:2)
问题是只有当脚本运行作为顶级脚本时才会执行__main__
块。 uwsgi 导入您的模块,因此永远不会运行__main__
块。将您的app.jinja_env.globals.update(id_encode=id_encode)
移到__main__
块之外,一切都应该正常运行。