rouille
v3.6.2
Rouille是一个微型武器库库。它创建了一个听力插座,并从客户端解析了传入的HTTP请求,然后向您提供处理请求的手。
如果您知道生锈的话,Rouille被设计为直观的使用。与明确的框架相反,它不采用中间地点。取而代之的是,所有内容都是线性处理的。
与网站密切相关的概念(例如Cookie,CGI,表单输入等)是Rouille直接支持的。更一般的概念(例如数据库处理或模板)未直接处理,因为它们被认为与Micro Web框架正交。但是,Rouille的设计使得与任何第三方库一起易于使用,而无需任何胶水代码。
如果您对HTTP的工作原理有一般的了解,则文档和有据可查的示例是使您入门的好资源。
根据任何一个
除非您另有明确说明,否则任何有意提交的工作供您纳入您的工作的捐款,均应在上面的双重许可中,没有任何其他条款或条件。
异步I/O,绿色线,Coroutines等。在生锈中,仍然非常不成熟。
Rouille库只是忽略了此优化,而是专注于提供易于使用的同步API,其中每个请求都在其自己的专用线程中处理。
即使轮盘本身是异步的,您也需要异步数据库客户端和异步文件加载才能利用它。生态系统中目前没有这样的图书馆。
一旦弄清楚异步I/O,Rouille将(希望透明地)更新以考虑到它。
在作者的旧Linux机器上, wrk -t 4 -c 4的一些基本基准测试显示以下结果:
http.createServer )产生约14k请求/秒。Rouille虽然不是最快的,但表现合理。在所有这些示例中,Rouille是唯一使用同步I/O的菜。
将数据库或模板集成到使用Rouille编写的Web服务器应该是微不足道的。此外,插件需要维护并倾向于创建一个依赖性地狱。作者认为,通常最好不要使用插件。
而不是这样做:(伪代码)
server . add_middleware ( function ( ) {
// middleware 1
} ) ;
server . add_middleware ( function ( ) {
// middleware 2
} ) ;
server . add_middleware ( function ( ) {
// middleware 3
} ) ;在Rouille中,您只需手动处理每个请求:
// initialize everything here
rouille :: start_server ( .. . , move |request| {
// middleware 1
// middleware 2
// middleware 3
} ) ;