rust_arkitect- 定义和验证Rust项目中的架构规则
rust_arkitect是一个受到phparkitect/arkitect项目启发的概念验证项目,旨在定义和验证Rust项目中的架构规则。它提供了一种开发人员友好的DSL,使用该DSL可以清晰地记录架构规则,并在测试期间提供即时反馈来捕获架构问题,从而有助于维护整洁、模块化和可扩展的代码库。
该项目提供了一个与Rust测试框架无缝集成的DSL,使开发人员能够将架构规则合规性作为测试套件的一部分进行断言。DSL被设计得尽可能接近自然语言,易于理解和使用。它还支持日志记录,以在验证过程中提供详细信息,开发人员可以通过设置环境变量来控制日志的详细程度。
rust_arkitect项目目前处于概念验证阶段,演示了其核心理念。该项目旨在为Rust项目提供一种定义和执行架构规则的方式,从而促进代码库的可维护性和可扩展性。
https://github.com/pfazzi/rust_arkitect
在Rust的Axum Web框架中使用异步代码时可能遇到的超时行为
该文章讨论了在Rust的Axum Web框架中使用异步代码时可能遇到的超时行为。主要内容包括:
-
介绍了一个简单的异步处理程序示例,该处理程序记录日志、写入磁盘并返回一个JSON对象。但有时该处理程序会在执行过程中神秘地停止。
-
解释了这种超时行为的原因是Axum提供了一种通过中间件设置请求超时的灵活方式。如果请求耗时超过设定的超时时间,Axum将终止该请求。
-
作者提供了一个模拟磁盘写入缓慢的示例代码,演示了超时如何导致写入数据不完整。
-
使用Windows进程监视器和调试器,作者追踪了文件句柄是如何被正确关闭的,发现是Drop trait实现了这一功能。
-
最后,作者提出了几种应对超时的方法,如正确处理错误、调整超时时间、使用back-pressure或优先队列等。
总的来说,这篇文章重点讨论了异步Rust应用程序中可能遇到的超时问题,并提供了诊断和处理这种情况的方法。
https://baarse.substack.com/p/debugging-axum-async-timeouts-rust
--
From 日报小组 Mike
社区学习交流平台订阅:
评论区
写评论还没有评论