自3.0以来,巴厘岛框架已经相对完整,具有HTTP / RPC /活动,并且版本3.2是优化1.0、2.0、3.0所有功能细节的版本。从3.2开始,我希望更多的Python团队可以在Bali Buty时享受Bali Butys。转换微服务或云的转换。
所涉及的更改非常大,GITHUB的3.2版本发布了记录说明。
尽管更改正在发生变化,但没有不兼容的更新。因此,新功能和优化与早期版本兼容。
https://github.com/bali-framework/bali/releases/tag/v3.2.0
让我们解释一下还有一些大变化:
我相信Django是许多Pythonista的入门框架。Django模型中的文档部分具有对经理的介绍。巴厘岛3.2引入的经理概念与Django中经理的概念非常相似,但是呼叫方法是不同的。
近年来,大多数语言都具有完整的异步IO解决方案。从延期,在早期的JavaScript中的承诺到Java的Netty,GO中的Goroutine。无论哪种解决方案,在Python中都没有这种纠结,以至于同时需要同步和异步。构建的网络请求始终返回Promise对象。您只能使用异步IO的思考。
尚未发布的Django 4.1已在模型层中添加了异步方法。API如下:
可以看出,Django的QuerySet和经理的异步支持增加到了原始单词。Personi对Django很熟悉,我猜这是一种异步调用方法,是Awatable的函数。如果您需要在业务中自定义一个函数,例如select_best,此时,django的方案是
Bali中使用的API解决方案是使用IO/AIO查询的,以区分同步和异步,对于模型,根据当前上下文自动适应。查看使用示例:
使用管理器时
使用模型的模型
异步示例:
同步示例:
3.2版介绍了资源的注册使用。为了与这种方法合作,巴厘岛对应用程序进行了重组和优化。这样,在很大程度上简化了Main.py的代码。LET来看一下比较:
较早的版本需要分别传递HTTP服务的路由器和RPC服务的服务。3.2版本仅需要指定标题和注册资源。相应的路由器和服务将在启动时动态生成。
让我们看一下将资源更改为HTTP服务:
我需要在urls.py中手动注册。3.2在将资源注册到应用程序后,可以删除与路由相关的文件。这是一个选择。当然,当旧项目升级时,它根本不影响,因为原始解决方案也与注册方法兼容。同时,使用原始定义方案和注册方式是正常的。
为什么它非常简化,因为可以直接删除原始的GRPC文件服务/rpc/service.py。
比较项目结构布局结构的变化:
除了核心,逻辑,BIZ的概念外,服务还已成为固定结构的灵活结构。关键是整个服务都是可选的。如果所有企业都是用资源开发的,则将没有服务文件夹。