Litestar 2.0 [正式的Starlite]即将来临!
在Python Web开发框架的世界中,Web框架可以分为两个极端:
-
一个类别是Django和Odoo等全栈框架。它们通常被认为是肿又重的,因此很难优化性能。这些框架强加了自己的做事方式,并且可以妨碍前端和后端开发人员。他们默认情况下甚至可能不会提供适当的REST API。尽管它们可以在某种程度上进行自定义(尤其是Django),但是实施特殊功能可能具有挑战性,需要砍伐的解决方法或叉子。尽管可以通过插件添加某些功能,但是并非所有插件都可以正确维护或符合核心框架的质量标准。
-
其他有微型框架,例如烧瓶,精理和fastapi,这些框架很简单(只是带路由处理程序的HTTP服务器),以实现 Simplicity 。但是,他们拒绝许多可以使开发人员受益的功能。这通常会导致团队基于这些微观框架建立自己的半烹饪框架,这些框架最终变得太复杂而无法维护。因此,团队经常放弃其自定义框架,并迁移到诸如Django之类的框架,这可能不支持其特定用例。
为什么我们选择litestar而不是fastapi?
我们是缅甸仰光的小型但经验丰富的软件开发机构之一。在过去的十年中,我们使用了各种Python Web框架 - 早在2010年,我们就使用了Web2py进行快速简便的应用程序开发,然后我们搬到了Django,以获取更多的Fuller stack/Admin Style Style Dev需求。在2015年至2019年期间,我们开发了自己的聊天室和实时社交应用程序,因此我们使用了龙卷风网络。它仍然很棒,高质量的实时网络框架,但是它没有任何支持构建REST/OpenAPI系统的支持,因此我们在2020年左右开始尝试FastApi。
Fastapi的短缺
一开始,一切都很好。但是,在我们将其移至分期并与数百用户进行测试后不久,它开始遇到问题。
- 我们面临已报告的记忆泄漏问题,并提出了其他贡献者的请求,这些贡献者已经准备好了很长时间。
- 此外,我们在文件上传中遇到了意外的异步问题和随机失败。
更糟糕的是,存储库有等待合并多年的质量拉力请求,并且维护者甚至不会实际审查它们。尽管存储库似乎有日常提交和赞助商更新活跃,但只有几行文档和readme.md更改。尽管社区的多次要求,维护者还是回答了,但我们并没有相信他的答复并质疑他们的判断(几个月前,所有问题都突然转化为讨论而没有任何通知)。
。大约在同一时间,Starlite框架发布了。即使在其Alpha版本中,它也比FastApi快得多,并且已经使用适当的依赖注入系统进行了良好的启示。另一方面,Fastapi仍然在这方面挣扎。因此,我们决定使用Starlite重写我们的应用程序,从那以后,我们还没有回头。事实证明,Starlite更加稳定和更快,即使在我们的用例中,即使在较旧的版本中,性能也提高了40%至120%。
我也加入了Starlite社区,并真正感谢他们致力于生产优质工作的承诺,这在Fastapi中不存在。我们已经使用Starlite(litestar)已有一年多了,这是一次很棒的体验。
输入litestar!
starlite 被更名为 litestar ,从2.0释放开始。
litestar 是一个在简单的微框架和企业全栈框架之间取得平衡的框架。使用litestar,您可以从路由处理程序功能(带有键入参数)开始,并且已经获得自动生成的OpenAPI 3.1文档,Swagger/Redoc/Element接口,以及只有五行代码的自动生成的示例模式文档。它甚至提供打字稿类型。接下来,Litestar不会妨碍您的方式,但是它提供了包括电池的功能,以构建功能齐全的全栈Web应用程序。只需导入或包括已经包括的贡献模台,中间件和插件,这些核心维护者是行业专家的核心维护者。
在Litestar 2.0中,您可以利用以下功能来构建全框架风格的应用程序:
- JWT-based authentication and security
- Domain-Driven Development (DDD) style web development具有CRUD操作,过滤,清单和计数。它支持甚至Django都需要其他插件的各种功能。
- Real-time systems using channels
- Caching and data stores
访问litestar.dev他们在以下方面的不和谐很大:
维护者非常有帮助,他们保持了良好的社区文化。他们保持高标准的代码质量,我在那里学到了很多贡献。鳕鱼和我们一起!
在下一篇文章中,我将展示一个简单的路由处理程序脚本如何使用DDD:DTO和存储库模式演变为复杂的应用程序。