SANIC,在异步模式下的模板和Jinja2



我从python开始,所以我可以犯错误我喜欢python的框架理智,我需要一个模板引擎,我更喜欢使用jinja2。

我找到了两种用于理智的扩展: 1. https://github.com/yunstanford/jinja2-sanic 2. https://github.com/lixxu/sanic-jinja2

在Jinja2文档上,我看到Jinja可以使用特定选项" Enable_async = true"在环境对象上的特定选项上使用,然后使用" render_async()"。因此,可以在异步模式下使用本地Jinja。

第一个问题:为什么使用扩展名?Jinja的语法很容易。

第二个问题:我已经检查了扩展名的代码,并且在Jinja中的特殊语法异步上没有找到参考。我不是SUR,但我认为扩展名在同步模式下使用Jinga。如果是真的,为什么?

第三个问题:我检查了jinja2代码,似乎模板文件正常读取,而不是使用异步方法(例如AIOFILES)。所以,我不明白异步模式在哪里...

感谢您的帮助

异步支持从版本2.9开始,Jinja2还支持python async并等待结构。就模板设计人员而言,此功能对他们来说是完全不透明的,但是作为开发人员,您应该意识到它如何实现,因为它会影响您可以安全地暴露于模板环境的哪种类型的API。

像其他人一样,您可以在等待语法中包装封锁代码。 从jinja2导入模板 impoty asyncio

async def generate_jinja_template():
    t = Template("Hello {{ something }}!") 
    t.render(something="World")
    return t
event_loop = asyncio.get_event_loop()
try:
    event_loop.run_until_complete(
        generate_jinja_template()
    )
finally:
    event_loop.close()

最新更新