#web-server #tiny #server #hyper #web #tokio

弃用 app servy

一个小巧的网页服务器

4 个版本 (2 个稳定版)

使用旧的 Rust 2015

1.0.1 2022年2月3日
1.0.0 2018年5月17日
0.3.0 2018年2月2日
0.2.0 2018年1月24日

#264 in #tiny

Apache-2.0/MIT

42KB
229

Servy

一个小巧的网页服务器

Build Status Build status

什么是 servy?

它是一个用 rust 编写的小巧的网页服务器。
它是一个单二进制文件,只有几个标志,类似于 python -m http.server

重要提示

默认情况下,servy 使用主机字符串 [::1] 在 ipv6 接口上启动。如果你想在 ipv4 接口上启动它,请使用 ipv4 主机字符串(见下文)

用法

servy

在端口 8000 上启动一个网页服务器

servy my/dir

使用 my/dir 作为根目录启动网页服务器

servy-p8080

在端口 8080 上启动 servy

servy-h127.0.0.1

使用主机字符串 127.0.0.1 启动 servy(在 ipv4 环回接口上启动)

servy-v

使用详细输出(每次建立连接时打印调试消息)

servy--help

打印帮助信息

内部内容

Servy 基于 hyper 构建。我喜欢它,因为它小巧简单,与大型框架相比,既不笨重。

基准测试(为什么不呢)

由于 servy 基于 tokio-minihttp,它相当快。在我的笔记本电脑上(Intel Core i7-4700MQ @ 2.4GHz,16GB RAM),当我运行 wrk -c 200 -d 10 -t 20 http://\[::1\]:8000/Cargo.toml 时,我得到

Running 10s test @ http://[::1]:8000/Cargo.toml
  20 threads and 200 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.87ms    1.20ms 205.06ms   99.30%
    Req/Sec     5.40k   449.11    11.21k    93.31%
  1084315 requests in 10.10s, 261.62MB read
Requests/sec: 107361.59
Transfer/sec:     25.90MB

为了比较,在 Python 3.6.4 上运行相同的测试 python -m http.server

Running 10s test @ http://0.0.0.0:8000/Cargo.toml
  20 threads and 200 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    10.13ms   72.55ms   1.68s    97.76%
    Req/Sec   371.84    314.60     1.94k    76.29%
  20260 requests in 10.08s, 10.55MB read
  Socket errors: connect 0, read 0, write 0, timeout 17
Requests/sec:   2009.57
Transfer/sec:      1.05MB

贡献

如果你遇到任何问题,有任何改进建议,甚至是一个 pull request,都可以发给我。所有反馈都受欢迎并受到赞赏!

依赖关系

~9.5MB
~152K SLoC