4 个稳定版本
1.0.3 | 2023 年 5 月 15 日 |
---|
#478 在 文本编辑器
每月 23 次下载
12KB
163 行
此库的开发已停止
GDHttp
GDHttp 是您可以为 Rust 语言创建的最低层的 HTTP 服务器。
目前仅支持 HTTP 1.1
如何使用它?
您可以使用 start
或 start_multithreaded
方法启动服务器。区别在于后者通过 thread::spawn
(您传递的第二个参数) 执行回调。在回调中,您可以处理请求,但必须返回一个 http 响应结构。
我知道,我知道,那个 status_code_message
东西会以某种其他方式完成。这是临时的。我只是需要尽快完成这个库,所以就这样。
简单示例,对所有请求返回 200 OK,Hello World
use std::collections::HashMap;
use gdhttp::HttpResponse;
fn main() {
let _ = gdhttp::start("0.0.0.0:8080", |_request| {
return HttpResponse {
body: "Hello world".to_string(),
headers: HashMap::new(),
status_code: 200,
status_code_message: "OK".to_string(),
};
});
}
多线程示例
use std::collections::HashMap;
use gdhttp::HttpResponse;
fn main() {
let _ = gdhttp::start_multithreaded("0.0.0.0:8080", |_request| {
return HttpResponse {
body: "Hello world".to_string(),
headers: HashMap::new(),
status_code: 200,
status_code_message: "OK".to_string(),
};
});
}
我的应用程序抛出了空的 400 错误请求,我做错了什么?
此库会在接收到来自客户端的无效有效负载时抛出 400 错误请求错误。可能您的请求只是编写错误。如果您认为并非如此,请提交一个问题。这个库很年轻,因此这种情况是正常的。
基准测试
在 ASUS Zenbook 14 UX425E i5-1135G7 16GB RAM 的 Fedora 37 KDE 变种上进行了两次基准测试。所有基准测试都使用了 Autocannon。
Autocannon 选项
- 持续时间:60s
- 并发连接:30
- 工作者:3
1. 启动方法
执行代码
use std::collections::HashMap;
use gdhttp::HttpResponse;
fn main() {
let _ = gdhttp::start("0.0.0.0:8080", |_| {
return HttpResponse {
body: "Hello world".to_string(),
headers: HashMap::new(),
status_code: 200,
status_code_message: "OK".to_string(),
};
});
}
结果
- 每秒 19035 请求(平均)
- 60.01s 内 2284000 请求
- CPU 使用率未超过 5.7%(由 btop 测量)
- 最大 RAM 使用:2.00MiB(由 btop 测量)
2. 启动多线程方法
执行代码
use std::collections::HashMap;
use gdhttp::HttpResponse;
fn main() {
let _ = gdhttp::start_multithreaded("0.0.0.0:8080", |_| {
return HttpResponse {
body: "Hello world".to_string(),
headers: HashMap::new(),
status_code: 200,
status_code_message: "OK".to_string(),
};
});
}
结果
- 每秒 14897 请求(平均)
- 60.03s 内 1788000 请求
- CPU 使用率:22%(由 btop 测量)
- 最大 RAM 使用:2.71MiB(由 btop 测量)