#pool #disk #tokio #thread-pool #sendfile #zero-copy #file-path

tk-sendfile

高性能的文件服务库。在特殊的 IO 线程中提供服务文件。在这个版本中,它使用常规文件读取,但我们将在支持的系统上使用 sendfile 进行优化,以便尽可能快地执行。

6 个版本 (3 个重大变更)

使用旧的 Rust 2015

0.4.0 2017年3月30日
0.3.2 2017年3月14日
0.3.1 2017年2月13日
0.3.0 2016年10月20日
0.1.0 2016年10月17日

#1373文件系统

每月 21 次下载
tk-http 中使用

MIT/Apache

18KB
316

为 Tokio 提供 Sendfile

状态alpha
文档http://docs.rs/tk-sendfile

一个可以处理文件请求并将数据通过零拷贝(使用 sendfile)发送到套接字的线程池。

挑战

  1. sendfile在写入套接字时是非阻塞的,但在两种情况下会阻塞对磁盘的访问:初始open()在 sendfile()系统调用内部读取文件
  2. 进行多个sendfile操作需要一些记录
  3. 应该能够为用户透明地实现文件缓存(包括已打开的文件和内存中的文件数据)
  4. [待办] 服务用户指定的文件路径需要一些非平凡的代码来防止符号链接攻击

许可证

根据以下之一许可

贡献

除非您明确声明,否则您有意提交给作品并包含在内的任何贡献,根据 Apache-2.0 许可证定义,应按上述方式双许可,没有任何额外的条款或条件。

依赖关系

~6MB
~95K SLoC