Flask - periodically rendering html without context
我想有一个定期任务,呈现一个HTML文件,并通过boto上传到s3。
这个问题是因为任务在端点函数之外(即由app.route修饰),所以没有Flask上下文。 因此,当我的任务执行并调用render_template时,由于没有上下文,因此存在异常:
1 2 3 4 | Traceback ........ File"/usr/local/lib/python2.7/site-packages/flask/templating.py", line 126, in render_template ctx.app.update_template_context(context) AttributeError: 'NoneType' object has no attribute 'app' |
我的任务初始化是这样的,我传入我想要定期执行的函数:
1 2 3 | HtmlUploader.new( lambda: render_template('something.html', value=get_value()) ).start() |
有什么办法可以在app端点函数之外调用render_template吗?
使用
您可以轻松地为批处理创建一个:
1 2 3 | def render_with_context(template, _url='/', **kw): with app.test_request_context(url): return render_template(template, **kw) |
这会为给定的URL生成"测试"请求(默认为
1 2 3 | HtmlUploader.new( lambda: render_with_context('something.html', value=get_value()) ).start() |